実践Ruby on Rails学習ノート#1初期設定編

これから1日1章くらいのペースで実践Ruby on Railsをやっていこうと思う.まじでこのくらいのペースでやってかないとと焦っています...笑 と言っても仕事優先なので仕事の合間に本気でやるしかないですが...

ということで実践RoRは全部で20章という構成になっているので,理想は20日後には,終日予定ある日飛ばしたとしても最低7月10日くらいには終わらせたいと思いながら必死に頑張ります.

環境構築

まず開発環境を整えるところから始めます.

おなじみVagrant

新しいラップトップになっていたのに今気づいたのでVirtualBoxVagrantをダウンロードします

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で自動テストできるように設定していきますー。

それでは!