FANCOMI Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・新規事業のエンジニア・技術ブログ

CygwinでもRuby on Railsしたい

y_yamadaです。最近、二つのことが気になっています。

一つは社内のドリンクサーバーの横に設置されている机にいつの頃から100円玉が置いてあって、一日たって三日たってもそのままで持ち主も現れず誰のかなあと。 それが昨日、消えていました。きっと落とし主が見つかったんだな、または熱射病手前の喉の渇いた人がジュースを買ったんだ、もう迷子の100円玉君は家に帰ったんだなと心が晴れ晴れしました。 ちなみに社内に設置してある自動販売機で1番安い飲み物はジョージアエメラルドマウンテンブレンドで90円、またSuica決済も可能でした。これからの暑い季節に外回りの営業さんも大満足ですね。

さて、気になっていた二つ目はCygwinでもRuby on Railsしたい!です。

ファンコミでは社内から社外へ通信するにはプロキシーを通さないといけないのでまずはその設定からです。 基本的に社内のシステム管理者から伝えられたものを設定してください。

 

まずは全体的に使える設定です。

$ vi ~/.bash_profile
export http_proxy=http://hogeuser:secretpassword@gk.example.com:8080   ← httpで接続する時のユーザー名:パスワード@アドレス:ポート番号
export ALL_PROXY=$http_proxy

 

次にSubversionのプロキシー設定です。

$ vi .subversion/servers
[global]
http-proxy-host = gk.example.com       ← httpで接続する時のアドレス
http-proxy-port = 8080                 ← httpで接続する時のポート番号
http-proxy-username = hogeuser         ← httpで接続する時のユーザー名
http-proxy-password = secretpassword   ← httpで接続する時のパスワード

 

次にwgetのプロキシー設定です。

$ vi /etc/wgetrc
https_proxy = https://gk.example.com:8080   ← https(SSL)で接続する時のアドレス、ポート番号
http_proxy = http://gk.example.com:8080     ← httpで接続する時のアドレス、ポート番号
ftp_proxy = http://gk.example.com:8080      ← ftpで接続する時のアドレス、ポート番号
proxy_user = hogeuser                       ← ユーザー名
proxy_passwd = secretpassword               ← パスワード
use_proxy = on                              ← プロキシーを利用する

 

次にgitのプロキシー設定です。

$ git config --global https.proxy https://hogeuser:secretpassword@gk.example.com:8080  ← https(SSL)で接続する時のユーザー名:パスワード@アドレス:ポート番号
$ git config --global http.proxy http://hogeuser:secretpassword@gk.example.com:8080    ← httpで接続する時のユーザー名:パスワード@アドレス:ポート番号
$ git config --global url."https://".insteadOf git://                                  ← https(SSL)なURLを渡されたらなるべくgitなプロトコルを利用する

 

Cygwinのソフトの追加を楽にするためにapt-cygをインストールします。

$ svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/   ← apt-cygを取ってきてローカルの/binに置く
$ chmod +x /bin/apt-cyg                                               ← 実行権限を付与する

 

プロキシーの設定ばかりが長かったですね。 やっとRuby本体関連の設定&インストールをします。 バージョン2.1を試してみたいですが実務ですぐに使えるバージョンということで2.0をインストールします。 rbenvなら手軽にどのバージョンをインストールできるのでご入り用をどうぞ。

$ apt-cyg install git make patch libncursesw-devel openssl-devel Cygwin32-readline libreadline-devel libsqlite3-devel libxml2-devel libxslt-devel
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ git clone git://github.com/sstephenson/Ruby-build.git ~/.rbenv/plugins/rucby-build
$ rbenv install --list
$ rbenv install 2.0.0-p451
$ rbenv global 2.0.0-p451
$ Ruby --version
Ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-cygwin]

 

Rubyのインストールが済んだので後はrailsのインストールです。 こちらはもうgemが使えるので簡単です。 オプションでバージョン4.0.0、ドキュメント不要を指定しています。

$ gem install rails --version 4.0.0 --no-ri --no-rdoc

 

以上でRuby on Railsがインストールできました。 後はapacheとpassengerを入れればWebサーバーからアクセスできるようになります。 それはググればすぐ情報が見つかるのでここではわざわざ書かないことにします。

 

ついでとしてrailsをコンソール(コマンドライン)から使う方法を書こうと思います。 通常、Ruby on RailsはApacheなどのWebサーバーで動きますが、書き方次第でコンソールでも動かすことができます。 railsは起動がものすごく重いのであまりコンソールで動かすようなバッチ処理に向いていませんが、 Webサーバーとバッチで同じrailsのモデルを使い回せると便利なので方法を書いておこうと思います。

「/var/www/www.example.com/app」ですでにrailsが動いていることを前提としています。 以下が実際にコンソールで動くRailsのスクリプトの例です。

#!/usr/bin/env ruby

require '/var/www/www.example.com/app/config/boot'
require '/var/www/www.example.com/app/config/environment'

dbconfig = YAML.load_file('/var/www/www.example.com/app/config/database.yml')
ActiveRecord::Base.establish_connection(dbconfig['development'])

result = TestTable.find(:all, :conditions => {:table3_id => 3})
result.each { |line|
    table3_id = line['table3_id']
    table4_id = line['table4_id']
  puts "table3_id:#{table3_id},table4_id:#{table4_id}"
}

 

ではではHappy Hacking!