Railsの社内勉強会的な何か。
ここに沿ってやってる。
http://guides.rubyonrails.org/getting_started.html
gemとは ... ライブラリ管理するみたいな。
2.2 The Components of 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のコードはテストしてないみたい。