Ruby on RailsをOS Xに導入して動作させるまで
rubyという言語はC++erを甘やかすので、この機会に、甘やかされてみる事にした。
取り敢えず、UNIX環境で動かしたかったので、手軽にOS Xを用いる事とした。
導入
% sudo gem install rails
しかし、何かエラーを吐いた。
ERROR: Error installing rails:
activesupport requires Ruby version >= 2.2.2.
どうやら、2.2.2以上のバージョンでなければインストールできないようだ。はて、しかし私のこのOS Xのrubyは、そんなにバージョンが低かったのだろうか。
% ruby --version ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
確かに、低い。いやしかし、私の頭の片隅にある記憶を辿れば、恐らく以前brewでrubyを管理したはずである。
% brew install ruby Warning: ruby-2.3.1 already installed % which ruby /usr/bin/ruby
やはりそうだ。これはつまり、/usr/bin/rubyなるパスしか見えていないためだ。
% export PATH="/usr/local/bin:$PATH"
新規プロジェクト作成
ここで少し、調べて見ると*1、
システムのgemはbundlerいっこにして、必要なものはvendor/bundleに格納し、bundle execで呼び出すのがクリーンでいいですよね。
確かにそうだ。システムのgemにインストールするのでは、バージョンアップしていくにつれての管理がとても気にかかる。
そんなわけで、bundler管理下でrailsを扱うことにした。
% sudo gem install bundler % mkdir project % cd project % bundle init Writing new Gemfile to /Users/Hiroki/Documents/src/ruby/project/Gemfile
生成されたGemfileの該当部分をコメントアウトする。
# A sample Gemfile source "https://rubygems.org" gem "rails"
bundlerを用いてrailsを導入する。
% bundle install --path vendor/bundle --without staging production --jobs=4
そしてフレームワークを新規展開する。
% bundle exec rails new test_project -BJT
動作させる
ビューとコントローラーを作成。フレームワーク展開の段階で指定したオプションが反映されている様子が確認できる。
% bundle exec rails generate controller texts index show create app/controllers/text_controller.rb route get 'text/show' route get 'text/index' invoke erb create app/views/text create app/views/text/index.html.erb create app/views/text/show.html.erb invoke helper create app/helpers/text_helper.rb invoke assets invoke js create app/assets/javascripts/text.js invoke scss create app/assets/stylesheets/text.scss
show.html.erbを、取り敢えず以下のようにした。
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Test Text</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div id="holder"><p><%= @text[:string] %></p></div> </body> </html>
style.css。
@charset "UTF-8"; #holder{ margin:0 auto; width:300px; height:auto; border:solid #eee 1px; border-radius:50px; background-color:#3593DD; } #holder p{ text-align:center; color:#eee; }
texts_controller.rbで上記htmlの変数を定義。
class TextController < ApplicationController def index end def show @text=Hash.new @text[:string]='Roki' end end
サーバーを立ち上げ動作の確認。今回はhttp://localhost:3000/text/showにアクセスする。
% bundle exec rails s
一通り触って感じる。これはとても便利だ。開発速度が非常に早い。巷で話題になる理由がなんとなく分かった。
ここまでの基本的な工程を基盤に、configureを設定して各データごとにページ内情報を変動させたり、ましてやその情報をデーターベースを活用した上で管理し、稼働させれば、ウェブアプリケーションの実装は完了する。素晴らしい。
しかし、私個人としては、railsなる素晴らしいフレームワークを扱うための、rubyという言語の基本的な思想*2に反するような発言になる気がしないでもないが、rubyとrailsによって、ブラックボックス化されている部分を、理解したいと思うところがある。そういった面でも、今一度railsの前に、ruby自体を深く学習するのも良いのかもしれないと思った。