&tag(Rails3);
*目次 [#c29a9fdb]
#contents
*参考情報 [#vce0c679]
-[[Rails]]
-[[RSpec]]
-[[UrlHelper]]
-[[ActiveSupport]]
-[[lazy_high_charts]]
-[[SimpleCaptcha]]
-[[./現代的な環境構築]]
-[[./基本]]
-[[./データベース]]
-[[./モデル]]
-[[./scaffold]]
-[[./マイグレーション]]
-[[./ルーティング]]
-[[./ビュー]]
-[[./テスト]]
-[[./Ajax]]
-[[./検証]]
-[[./論理削除]]
-[[./タイムゾーン]]
-[[./日本語化]]
-[[./起動時の流れ]]
-[[./ログ出力の改善]]
-[[./バッチ処理]]
-[[./管理画面]]
-[[./ツリービュー]]
-[[./RSSフィードの生成]]
-[[./メール送信]]
-[[./問い合わせフォーム]]
-[[./アップグレード]]
-[[kaminari]]
-[[Capistrano]]
*素朴な疑問 [#qe7742d0]
**gitは必須なのか? [#y92b48ed]
-プラグインをインストールするのに便利なだけで必須ではない。自分のソースは何で管理しようが自由。
**アセットパイプラインってなにってなに? [#hd2d51de]
***概要 [#y7cdec72]
-[[アセットパイプライン(Asset Pipeline) - Railsドキュメント:http://railsdoc.com/asset_pipeline]]がわかりやすいかも。
-/app/assets、/lib/assets、/vendor/assetsに置かれたファイルが処理対象。
-JSやCSSやCoffeeScriptがおける。画像もおける。
***URLとパス [#mf9a5d13]
-これがわかりづらい。assets直下のサブディレクトリだけ無視されるらしい。
,パス,URL
,app/assets/images/hoge.png,/assets/hoge.png
,app/assets/images/test/hoge.png,/assets/test/hoge.png
*Tips [#fa4ab927]
**コンソールを使う [#v18c2ae8]
-コマンドラインで以下を実行
rails console
**DBコンソールを使う [#p7e0cbb9]
-データベースごとの管理ツールを起動してくれる。
rails dbconsole
-sqlite3だと以下のように内容を確認可能。
sqlite> .tables
sqlite> select * from books;
**development/productionでデータのコピー [#b4c5b210]
***cloneを使う [#ed6d86ef]
-以下のrakeコマンドでproduction→developmentができるらしい。[[Railsでproduction環境からテスト用DBを再構築する方法 - Hello, world! - s21g:http://blog.s21g.com/articles/579]]より。
% rake db:test:clone RAILS_ENV=production
***dump/loadを使う [#hd06d843]
-[[13さいの備忘録 : SQLite3→MySQLへデータ移行:http://blog.livedoor.jp/nizoraul/archives/3409614.html]]にかかれてある方法。
-Gemfileに以下を追加し bundle install。
gem 'yaml_db'
-production環境のデータをdump。db/dump.yamlが作成される。
rake db:dump RAILS_ENV=production
-development環境にデータをload。
rake db:load
**Twitter Bootstrapを使う [#zaf8ee2a]
-[[TwitterBootstrapWithRails]]
**lib以下に置いた自作ライブラリをautoloadする [#gd8ff015]
-application.rbに以下を追加。
#pre{{
config.autoload_paths += %W(#{config.root}/lib) # 追加
config.autoload_paths += Dir["#{config.root}/lib/**/"] # 追加
}}
**Singletonオブジェクトを使う [#r5de4b2d]
-[[how do I create a singleton global object in rails - Stack Overflow:http://stackoverflow.com/questions/10762246/how-do-i-create-a-singleton-global-object-in-rails]]
**複数のモデルを一気に編集する [#lee4e505]
-[[Editing Multiple Records in Rails | Anthony Lewis:http://anthonylewis.com/2011/04/15/editing-multiple-records-in-rails/]]がわかりやすい。fields_forを使っているところがポイント。
-fields_forはネストしたモデルを編集するために使うものかと思っていたけど、普通にこんな感じのタグを出力してくれ、これを使ってモデルの配列が扱えるようだ。
#pre{{
<td><input id="user_1_first_name" name="user[1][first_name]" size="30" type="text" value="abc" /></td>
}}
**requestから取得できる情報あれこれ [#p7e42812]
-[[Railsのrequestオブジェクトの中身 refererやpath_infoを知りたい場合 - memo.yomukaku.net:http://memo.yomukaku.net/entries/70]]が参考になる。
*トラブルシューティング [#idddb4bf]
**rake testが実行できない [#jf748935]
-次のエラーが表示される。
MiniTest v1.6.0 is out of date. (RuntimeError)
-[[2011-10-20 - It’ll be:http://d.hatena.ne.jp/ks0608/20111020]]に書いてある方法で対処できる。
***MiniTestを明示する方法 [#d03e60ec]
-Railsアプリのrootに存在するGemfileの末尾を次のように変更する。
#pre{{
group :test do
# Pretty printed test output
gem 'turn', :require => false
gem 'minitest'
end
}}
**bundle関連 [#n07b3c39]
***bundle install [#p42eaac9]
-pathを指定したほうがいいらしい。
bundle install --path vendor/bundle
***rake aborted! cannot load such file -- bundler/setup [#m83dcb00]
-[[メモーる: rake aborted! cannot load such file -- bundler/setup:http://memoyasu.blogspot.com/2011/11/rake-aborted-cannot-load-such-file.html]]
***Gemfile/Gemfile.lockを作り直したい [#d09a5334]
-rubyのバージョンが上がるなどして、開発中RailsアプリケーションのGemfile/Gemfile.lockの中にある各種パッケージのバージョンを一括更新する方法が知りたいが不明。
-rails newしてそのGemfileを参考にして書き直すとか。
***mysql2関連のエラー [#pc73b593]
-Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter`というエラー。
-Gemfileを編集し、"mysql2"→"ruby-mysql2"に変更するも修正できず。
-vendorフォルダをいったん削除し、Gemfileを以下のように修正し、bundle installしなおした。
#pre{{
gem 'mysql2', '~> 0.3.11'
}}
**モデル関連 [#v95d9404]
***Uninitialized Constantsと表示されモデルが参照できない。 [#r0e060e5]
-モデルのファイル名がおかしいのかも。
-ItemPrice→item_price.rbの関連がないと読み込まれないのかも。実行時に探している(?)
**データベース関連 [#ucc30064]
*** Cannotestablishconnectionがどうのこうの [#f16786ea]
-Gemfileに"mysql2"が含まれていなかったのが原因か。
*** モデルのattributesが食い違っている [#tfa1774c]
-Rspecのテスト環境のときは〜_testデータベースが使われる。テーブル定義があっているかどうか確認。
**プロダクション環境でエラー [#vc7d1c17]
-production環境でエラーになる場合、config.assets.compile = trueとか、config.serve_static_assets = falseをコメントアウトするとか。
**ActionController::RoutingError (No route matches [GET] "/favicon.ico"): [#ice29956]
-Twitter-Bootstrap-Railsを入れると発生?
-favicon.icoが適切な場所にないのが原因。[[ActionController::RoutingError (No route matches [GET] "/favicon.ico") in Rails - Stack Overflow:http://stackoverflow.com/questions/15687506/actioncontrollerroutingerror-no-route-matches-get-favicon-ico-in-rails]]
-以下のようにapplication.html.erbでリンクしている場合
<%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
-app/assets/images/favicon.icoがないとエラーになる。
-これでいいかと思ったら何かのタイミングでまたでるようになった。