Tag: Rails3

目次

参考情報

素朴な疑問

gitは必須なのか?

  • プラグインをインストールするのに便利なだけで必須ではない。自分のソースは何で管理しようが自由。

アセットパイプラインってなにってなに?

概要

URLとパス

  • これがわかりづらい。assets直下のサブディレクトリだけ無視されるらしい。
    パスURL
    app/assets/images/hoge.png/assets/hoge.png
    app/assets/images/test/hoge.png/assets/test/hoge.png

Tips

コンソールを使う

  • コマンドラインで以下を実行
    rails console

DBコンソールを使う

  • データベースごとの管理ツールを起動してくれる。
    rails dbconsole
  • sqlite3だと以下のように内容を確認可能。
    sqlite> .tables
    sqlite> select * from books;

development/productionでデータのコピー

cloneを使う

dump/loadを使う

  • 13さいの備忘録 : SQLite3→MySQLへデータ移行にかかれてある方法。
  • Gemfileに以下を追加し bundle install。
    gem 'yaml_db' 
  • production環境のデータをdump。db/dump.yamlが作成される。
    rake db:dump RAILS_ENV=production
  • development環境にデータをload。
    rake db:load

Twitter Bootstrapを使う

lib以下に置いた自作ライブラリをautoloadする

  • application.rbに以下を追加。
       config.autoload_paths += %W(#{config.root}/lib)  # 追加
       config.autoload_paths += Dir["#{config.root}/lib/**/"] # 追加
    

Singletonオブジェクトを使う

複数のモデルを一気に編集する

  • Editing Multiple Records in Rails | Anthony Lewisがわかりやすい。fields_forを使っているところがポイント。
  • fields_forはネストしたモデルを編集するために使うものかと思っていたけど、普通にこんな感じのタグを出力してくれ、これを使ってモデルの配列が扱えるようだ。
         <td><input id="user_1_first_name" name="user[1][first_name]" size="30" type="text" value="abc" /></td>
    

requestから取得できる情報あれこれ

トラブルシューティング

rake testが実行できない

  • 次のエラーが表示される。
    MiniTest v1.6.0 is out of date. (RuntimeError)
  • 2011-10-20 - It’ll beに書いてある方法で対処できる。

MiniTestを明示する方法

  • Railsアプリのrootに存在するGemfileの末尾を次のように変更する。
    group :test do
      # Pretty printed test output
      gem 'turn', :require => false
      gem 'minitest'
    end
    

bundle関連

bundle install

  • pathを指定したほうがいいらしい。
    bundle install --path vendor/bundle

rake aborted! cannot load such file -- bundler/setup

Gemfile/Gemfile.lockを作り直したい

  • rubyのバージョンが上がるなどして、開発中RailsアプリケーションのGemfile/Gemfile.lockの中にある各種パッケージのバージョンを一括更新する方法が知りたいが不明。
  • rails newしてそのGemfileを参考にして書き直すとか。

mysql2関連のエラー

  • Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter`というエラー。
  • Gemfileを編集し、"mysql2"→"ruby-mysql2"に変更するも修正できず。
  • vendorフォルダをいったん削除し、Gemfileを以下のように修正し、bundle installしなおした。
    gem 'mysql2', '~> 0.3.11'
    

モデル関連

Uninitialized Constantsと表示されモデルが参照できない。

  • モデルのファイル名がおかしいのかも。
  • ItemPrice→item_price.rbの関連がないと読み込まれないのかも。実行時に探している(?)

データベース関連

Cannotestablishconnectionがどうのこうの

  • Gemfileに"mysql2"が含まれていなかったのが原因か。

モデルのattributesが食い違っている

  • Rspecのテスト環境のときは〜_testデータベースが使われる。テーブル定義があっているかどうか確認。

プロダクション環境でエラー

  • production環境でエラーになる場合、config.assets.compile = trueとか、config.serve_static_assets = falseをコメントアウトするとか。

ActionController::RoutingError (No route matches [GET] "/favicon.ico"):

  • Twitter-Bootstrap-Railsを入れると発生?
  • favicon.icoが適切な場所にないのが原因。ActionController::RoutingError (No route matches [GET] "/favicon.ico") in Rails - Stack Overflow
  • 以下のようにapplication.html.erbでリンクしている場合
      <%= favicon_link_tag 'favicon.ico', :rel => 'shortcut icon' %>
  • app/assets/images/favicon.icoがないとエラーになる。
  • これでいいかと思ったら何かのタイミングでまたでるようになった。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-04-13 (水) 16:47:33