RubyOnRailsの開発環境

Ruby2.0.0とRails4をためしてみた

投稿日:

本当なら、われわれ素人は枯れ尽くしてから手を出したほうがいいんですが、WEB+DB PRESS Vol.73の記事を読んでたら試したくなったのでOSX Lionで試してみた

気になったのは、「体感速度の大幅な向上」というとこで、Rakeタスクやアセットプリコンパイルなどがサクサクになったらしい

記事の例によるとプリコンパイルが約2.5倍早くなったということで、JavaScritpt多めのアプリを作るにはメリットは大きそう

 

 

 

Ruby2.0.0のインストール

rvmがすでにはいっているとします

デフォルトにするなら

 

 

Rails4.0のインストール

3月13日現在はまだ正式リリース版が公開されていないので --pre オプションをつける

 

*もしも、 ERROR: While executing gem ... (Gem::DependencyError) Unable to resolve dependencies: rails requires activesupport (= 4.0.0.beta1), actionpack (= 4.0.0.beta1), activerecord (= 4.0.0.beta1), actionmailer (= 4.0.0.beta1), railties (= 4.0.0.beta1), sprockets-rails (~> 2.0.0.rc3) とか言われたら

stackoverflow.com/questions/15059409/bundler-is-not-compatible-with-rubygems-2-0-please-upgrade-to-bundler-1-3-or-hi

 

Springの導入

railsコマンドなどをつかう際に事前にプロセスをロードしておくことで、コマンドが早く実行できる仕組み

たぶんzeusとかと同じ

 

これをみると rspecやrake、railsのgenerateやconsoleなどが高速化されるぽい

雑誌の例だと2回めからは2秒近く短縮されているとのこと

 

Faster Rails specs with spring – faster than spork and easier to setup

 

Spring と Direnv を使って Rails と Rspec を高速起動。快適開発はじめる

新しいgemを追加したのにgenerateコマンドが更新されないとき

一度spring serverを止めてみる

 

guard-rspec

*Guardでどうつかうのかと思ったらrspec-guardではspring: trueオプションがあった

github.com/guard/guard-rspec

*この場合Gemfileにspringを足しておく必要がある

 

 

guard-cucumber

*guard-cucumberにも

github.com/guard/guard-cucumber

sqlite3はdatabase_cleanerのtransactionストラテジーに対応してないようなので注意

sql error cannot start a transaction within a transaction while testing with cucumber

そして、rubygemsのdatabase_cleanerはsqlite3のSQLite3Aapterを正しく使わない(?)みたいなエラーが出るのでgithubの方のやつを使うこと

Use correct SQLite3Adapter superclass in Rails 4

Rails4の主な新機能のメリデメ

機能メリットデメリット
TurboLinksJavaScriptを使って、リンクをクリックするとtitleとbodyの変更してる方だけを書き換えるようにするのでアセットを再読み込みしない分はやいJavaScriptのdocument.onLoadとか$.readyとか2回目は機能しなくなる →jquery-turbolinkというgemで対処
ActionController::LivePush型のリアルタイム通信PassengerやUnicornだと利用できないか、リソースの使用効率が悪くなる→pumaなどのサーバをつかう
StrongParamatersシチュエーションに応じてコントローラーでどのパラメータにアクセスできるか制御できる より安全になる面倒くさくなる?(雑誌には載ってません。私の感想です)→セキュリティ上のリスクになりやすいので明示的にホワイトリストで決めたほうがいい

 

参考リンク(Proって書いてあるのは有料です)

#400 What’s New in Rails 4

#390 Turbolinks

#401 ActionController::Live pro

#371 Strong Parameters pro

#365 Thread-Safety pro

 

*TurbolinksはXSS攻撃の穴になるかもしれないという話

Rails4 の Turbolinks について最低限知っておきたいこととその他

Powで軽くはまる

Rails4とは関係ないですが久々に使ったらハマったのでメモ

アプリケーションルートで .rvmrcに

.powrcに

powderを入れなおして

 

 

Rails4のscaffold

model

attr_accessibleがなくなってStrongParamatersになった

 

controller

共通する処理をset_bookというプライベートメソッドにしてbefore_actionで実行してる

また、indexとかのjsonは別途jbuilderテンプレートが用意されることになったので、respond_to do |format|っていうのが消えた

(books.jsonで自動的にjbuilderテンプレートを探してくれる)

StrongParamatersを使ってる(怖い怖いインターネットのパラメータは信じちゃイカンというコメント)

*StrongParamatersのrequireとpermitメソッドの意味については

Rails 4でmass assignmentを防止する方法: strong parameters

github.com/rails/strong_parameters

*StrongParamatersで許可してないパラメータはどうなるの?とか

Rails4 の Strong Parameters でリクエストパラメータを検証する

view

erbとjbuilderのテンプレートが標準で用意されるようになってる

例えばindex.json.jbuilder

まとめ

そのほかRails4では、ザックリ削除された機能や変更点などもあって、その成り立ちとか理由もしっかり書いてある冒頭のWEB+DB PRESS Vol.73はかなりおすすめ

簡単なチュートリアルもあるよ

-RubyOnRailsの開発環境
-

執筆者:

  • Ruby2.0にしてRails4がインストールされず困ってたので参考にしました。有難うございます。

    rbenvではなくてrvmなんですね。

関連記事

Rails3でテストカバレッジを計測する~simplecov,thin

    rspecなどのテストでテストがどの程度カバーしているのかを簡単に計測するsinplecovというgemをいれた 目次1 Gemfile & bundle2 spe …

Rails3.2でJasmineをつかってBackbone.jsのModelをテストしてみる

  By: Glory Cycles   Developing Backbone.js Applications addyosmani.github.com/backbone-fu

Chef のtemplateでRails newのときデータベースをPostgreSQLに指定してgit initする〜railsrc

By: boring_vanner – CC BY 2.0 rails newをカスタマイズしてテスト環境とgit initを自動で準備する Chefのtemplateをつかって.rail …

Rubyで1158から10をつくった〜permutation

  By: Alex Popovkin, Bahia, Brazil – CC BY 2.0 CMで話題のやつをやってみた 目次1 スケルトンをつくる2  4つの数字の並び替えの …

no image

Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard

環境 ruby 1.9.3 & rails 3.2.8 参考 cucumber + spork + guard + factory_girl あってもよいが[crayon-59c13777a7 …