Railsの社内勉強会的な何か。

ここに沿ってやってる。

http://guides.rubyonrails.org/getting_started.html

gemとは ... ライブラリ管理するみたいな。

2.2 The Components of Rails

Railsには色々なコンポーネントがあるよ。

Action Pack

Action View

partial ... 部分的なテンプレート。リストの中身とか。共通的なUI部品のためのテンプレート。あまり使わない方が良いかも。

デフォルトで使ってるテンプレートエンジンはerb

Action Dispatch

routes.rb?あたりの設定?の話?

Action Mailer

メールの送受信ができるらしい。

テンプレートとか使えるらしい。

テンプレートはviewのディレクトリに入っているやつを使える。

Action Model

Active Record以外のORMも使えるよ。ま、使わないけど。

Active Record

mongodbとか使えるの?→NO SQLは使えないみたいね。

macで開発する場合はoracleはやめた方がよい。まともなクライアントソフトがないから。

Active Resource

routes.rbが簡単にかけるよ。

でも、resource :hoge

とか書くと、GET,PUT,DELETE,POST全部ルーティンぐされてしまうので、一長一短。

Active Support

Rubyのライブラリを拡張したもの。

Railties

「レイルタイズ」らしい。

開発時はあまり気にしない。

3. Creating a New Rails Project

rails new blog ってやるとアプリのコードが生成されるよ。

  • config ... DB、ライブラリのパス、ルーティング、ログの設定

configの中身はhot-reloadされないので、変更されるとapacheの再起動などが必要。

→passengerを使ってる場合はtmp/restart.txtをtouchすると良い。

appの中身を変更した場合は、developmentモードの場合はhot reloadされる。

productionの場合はreloadされないので、tmp/restart.txtをtouchしろと。

  • config.ru ... rackアプリケーションが起動するときに読み込む的な。

  • db ... データベースのマイグレーションのコードをここに書く。

rails g で生成されるコードだけではダメな場合は自分で書かなくてはいけない。

例) unique制約を追加するとか。

マイグレーションの順序がファイル名順になるので、基本タイムスタンプを頭につける。

タイムスタンプ以降の部分は任意。

  • lib ... 拡張したものをいれろ。たとえば、自分で作ったrakeタスクをいれたり。 appに入れちゃダメなの?→アプリケーション固有のコードを。共通で作ったコードとかでgemにするまでもないような感じのものはlibに

  • public ... railsで何も処理しないstaticなファイルとか。

  • Rakefile ... ビルドしたり。自分で拡張を書いた場合はlib/tasksにおけよ。

  • script ... railsのコマンドとかがおいていたりする。自分でここに何か置く事はないみたい。

  • test ... 使わない。rspec使うので。

  • tmp ... restart.txtとか

  • vendor ... サードパーティー製の何かをここに入れるとよいよ。でもあまり使わなくてもいいよ。

4 Hello, Rails!

4.2 Say “Hello”, Rails

<%= yield %>ってなによ?

generateするときにviewsのファイルを生成しないようにしたい場合はどうするの?

--no-assetsとするとjsとcssが生成されない。--no-helperするとhelperが生成されない。

4.3 Setting the Application Home Page

index.htmlを削除して、routes.rnにroot :to => "home#index"追加しろと。

routes.rbを見てみる。

resources :products do 
  member do
    get 'short'
    post 'toggle'
   end
   collection do
     get 'sold'
   end
 end

/products/100/short

/product/sold

に対応しているとか。わかりにくいね。

5 Getting Up and Running Quickly with Scaffolding

scaffoldはあまり使わないみたい。結局、カスタマイズしないといけないので。

testじゃなくてrspecのてすとを生成してほしいなぁ。

あと、ExtJSなのでviewは今回いらないんですけどみたいな。

fixturesのymlは使わず、factory_girl使う方がいいよ。

controllerのコード。 paramsとは?paramsは変数じゃなくてmethod?かどうかわからん。

scaffoldで生成されるコードをカスタマイズできない?→普通やらないよ。

http://codezine.jp/article/detail/2912 http://opentechnica.blogspot.jp/2012/04/rails3scaffold.html

format.html { redirect_to posts_url } は/posts/に飛ばすよ。/hoges/に飛ばしたかったらhoges_urlとかにすればいいよ。 "/"に飛ばしたかったらroot_urlだよね。

6 Creating a Resource

6.1 Running a Migration

rake db:migrate ってやるとdevelopmentモードで動くよ。 productionの場合はRAILS_ENVを指定してね。

rake db:migrate RAILS_ENV=production

その他Tips的な

pry便利。

irbと違い色ついてる。

ls とかcd とかが超便利。

rails c

railsのアプリの配下でrails cとするとrailsを使うライブラリを読み込んだ形でコンソールが開く。

ここで起動するコンソールをirbからpryに変更するには、gem 'pry-rails'をGemfileに書く。

==の定義

カスタムクラスを定義した場合は == を再定義しないといけない。

N+1問題(?)

bulletとかいれるといいよ。

rake -T

ってやると使えるrakeコマンドの一覧がでるよ。

therubyracer

を入れておかないとUbuntu 64でrake db:createしたときにエラーとなるよ。

http://stackoverflow.com/questions/7092107/rails-could-not-find-a-javascript-runtime

セッション管理

全部クッキーにいれてるとのこと。サーバ側で同期とか考えなくてよさそう。

開発のワークフロー

  • Railsでscaffold→model, controller, rspecできます。
  • modelのrspecを書く。
  • modelを実装。
  • controllerのrspecを書きます。
  • controllerを書く。
  • ExtJSのコード書く。

みたいな感じがおすすめ。ExtJSのコードはテストしてないみたい。