実践Ruby on Rails学習ノート#1初期設定編
これから1日1章くらいのペースで実践Ruby on Railsをやっていこうと思う.まじでこのくらいのペースでやってかないとと焦っています...笑 と言っても仕事優先なので仕事の合間に本気でやるしかないですが...
ということで実践RoRは全部で20章という構成になっているので,理想は20日後には,終日予定ある日飛ばしたとしても最低7月10日くらいには終わらせたいと思いながら必死に頑張ります.
環境構築
まず開発環境を整えるところから始めます.
おなじみVagrant.
新しいラップトップになっていたのに今気づいたのでVirtualBoxとVagrantをダウンロードします
https://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads
Rails 4.0からrailsやrakeなどのコマンドを呼び出すためのスクリプトがbinディレクトリ に置かれるようになりました。このディレクトリに設置されたスクリプトは Bundler 経由でコマ ンドを呼び出すので、Rails 3.x 時代のようにいちいち bundle exec を付けて呼び出す必要が なくなりました。
あ、これ知らなかった...。Web上の記事を見てbundle execを使ってるとこあるからそれを正しいと思い続けていた。。Webで転がってる記事はこういう情報を見分けて理解してくのってすごい難しいなぁ...。
Gem
- bcrypt...パスワード暗号化で使用
springは、Railsのプリローダ。以下の記事がよいです。
http://qiita.com/bibio/items/58806063bd2365a9832a
rakeタスクの実行時間が短くなります。これは必須。
$bin/rake about
コマンドをタイムコマンドに突っ込んでみる。
$ bin/rake about
一回目が以下。
real 0m6.828s user 0m1.852s sys 0m1.082s
そして二回目が以下のようになりました。
real 0m3.158s user 0m1.680s sys 0m0.855s
確かに速くなってる。
サブコマンドbinstub
で、bin/
以下にSpringに対応した実行可能ファイルが作成されます。
$ bundle exec spring binstub --all * bin/rake: spring inserted * bin/rspec: generated with spring * bin/rails: spring inserted
springの使い方は以下。
$ bin/spring Version: 1.3.6 Usage: spring COMMAND [ARGS] Commands for spring itself: binstub Generate spring based binstubs. Use --all to generate a binstub for all known commands. help Print available commands. status Show current status. stop Stop all spring processes for this project. Commands for your application: rails Run a rails command. The following sub commands will use spring: console, runner, generate, destroy, test. rake Runs the rake command rspec Runs the rspec command
サブコマンドstatus
でspringの状況を確認できます。
$ bin/spring status Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring. Spring is running: 2155 spring server | baukis | started 14 secs ago vagrant@rails-dev-box:/vagrant/baukis$ bin/spring status Warning: Running `gem pristine --all` to regenerate your installed gemspecs (and deleting then reinstalling your bundle if you use bundle --path) will improve the startup performance of Spring. Spring is running: 2155 spring server | baukis | started 28 secs ago
2155はLinuxのプロセスIDのようだ。バックグラウンドで常に動いてるSpringさん。
$ kill 2155 $ bin/spring status Spring is not running.
確かに死んだ。
Databaseの設定
vagrant側のゲストOSで作業を行います!!!
mysqlでuserを作成しておく。
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
database.yml
のuserやpasswordの部分を編集してDB作成!
$ bin/rake db:create
以下でtest環境用のdatabaseを作っておきます。
$ bin/rake db:create RAILS_ENV=test
サーバに接続してみる
これで何回目だよって失敗だけど、ホストOSからlocalhost:3000で繋げれなくて焦った。
http://qiita.com/Salinger/items/20f466ffe7cc0c04b010
IPアドレスを指定してrails serverしてやればいいみたい。
$ bin/rails s -b 0.0.0.0
これでつながるはずです。よっしゃー
タイムゾーン設定
config/application.rb
で設定します。
module Baukis class Application < Rails::Application config.time_zone = 'Tokyo' config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '*.{rb,yml}').to_s] config.i18n.default_locale = :ja # Do not swallow errors in after_commit/after_rollback callbacks. config.active_record.raise_in_transactional_callbacks = true end end
こんな感じで日本で設定できました。
そのほかConfigurationの内容はこちらで。
http://guides.rubyonrails.org/configuring.html
Generator設定
RailsはGneratorというとても気の利いた、ときに優しすぎて世話焼きなんんじゃないかってくらいの機能があります。
例えばControllerを作りますと、
$ rails g controller article create app/controllers/article_controller.rb invoke erb create app/views/article invoke test_unit create test/controllers/article_controller_test.rb invoke helper create app/helpers/article_helper.rb invoke test_unit create test/helpers/article_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/article.js.coffee invoke scss create app/assets/stylesheets/article.css.scss
こんな感じにズラーッと勝手に生成してくれます。coffeeやscssのファイル、helperまで。
詳しくはこちら。
http://techracho.bpsinc.jp/shibuya/2014_07_24/18388#g_controller
さすがにここまでしてくれなくていいので、この設定をconfig/application.rb
で設定します。
config.generatorsの各メソッドにパラメタータを与えます。
# config/application.rb config.generators do |g| g.helper false g.assets false g.test_framework :rspec g.controller_specs false g.view_specs false end
Railsのソースの中でどこがこれやってるのかなーと思ったけど見つからなかった。generator
というディレクトリは見つかったけどどこでやってるんだろー。
https://github.com/rails/rails/tree/master/activejob/lib/rails/generators/job
おわり
ということで初期設定一通りやってきましたー、次はRSpecで自動テストできるように設定していきますー。
それでは!