&tag(Rails/トラブルシューティング);
*目次 [#q70d8e0f]
#contents
*関連ページ [#sc06f186]
*参考情報 [#d9257280]

*エラー [#b3173f64]
*Bundler関連 [#f554662e]

**コントローラーのメソッドが呼ばれない [#m7bef2d0]
-コントローラーのメソッドがprivateになっていないか注意。
-privateを上の方に追加するとそれ以降privateとみなされてしまう。


**Macでlibv8/therubyracerをインストールしようとしてエラー [#j670893a]

***参考情報 [#ub668d86]
-[[Yosemite で libv8 と therubyracer をインストールする:http://3.1415.jp/d3wpyqjr/]]
-[[Kamiya54::Memo - [備忘録] Yosemiteにしてからbundle installが通らなくなった原因と対応:http://www.kamiya54.info/post/104406379491/%E5%82%99%E5%BF%98%E9%8C%B2-yosemite%E3%81%AB%E3%81%97%E3%81%A6%E3%81%8B%E3%82%89bundle-install%E3%81%8C%E9%80%9A%E3%82%89%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%8E%9F%E5%9B%A0%E3%81%A8%E5%AF%BE%E5%BF%9C]]

***現象 [#nc71375b]
-環境はOS X El CapitanとRubyのバージョンは2.2.4。
-Gemfileの指定。
#pre{{
gem 'therubyracer', '0.12.1'
gem 'libv8', '3.16.14.7'
}}
-「mkmf.rb:1702:in `dir_config': undefined method `split' for true:TrueClass (NoMethodError)」といったエラーが表示される。
-libv8はインストールできるのだが、therubyracerがどうしてもだめ。
-apple-gccをインストールする方法が提唱されているがこれはやりたくない。


***解決 [#k60819df]
-Gemfileの指定を以下のように変更。
#pre{{
gem 'therubyracer', '0.12.1'
gem 'libv8', '3.16.14.11'
}}
-このあと「bundle update」しないとだめなので注意。gem 'libv8', '3.16.14.13'だとだめかも。
-今後のことを考え検証用のデモプロジェクト「ruby-therubyracer-demo」を作成した。
**We're sorry, but something went wrong. [#v137d624]
-画面に表示された場合、アプリログを確認する(log/production.log)。それを見れば代替原因が分かる

**Uncaught exception: Specified 'mysql2'…(2015/10/28) [#td20bd27]
-正確には以下のようなエラーが発生する
  Uncaught exception: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile
-[[mysql2 gem v0.4.0 doesn't work · Issue #21544 · rails/rails:https://github.com/rails/rails/issues/21544]]によると、Gemfileでmysql2のバージョンを指定すれば良いらしい。
 gem 'mysql2', '~> 0.3.18'


*コントローラー [#b3173f64]


**コントローラーのメソッドが呼ばれない [#m7bef2d0]
-コントローラーのメソッドがprivateになっていないか注意。
-privateを上の方に追加するとそれ以降privateとみなされてしまう。


*一般 [#f0cd3856]

**DEPRECATION WARNING: The configuration option `config.serve_static_assets` has been renamed to `config.serve_static_files` to clarify its role [#sbf3f169]
-development.rbで「config.serve_static_assets = true」を「config.serve_static_files = true」に変更。


**クラス名が衝突する [#mb248a4d]
-Ruby一般の場合自作クラスをmoduleを使ってネームスペース内に格納するのが定石。
-ただしRailsの場合モデル名を自由にmodule内に入れることができないかもしれない。
-無理矢理するなら以下のような方法が使える?[[My class name conflicting with Ruby's - Stack Overflow:http://stackoverflow.com/questions/20940499/my-class-name-conflicting-with-rubys]]
#pre{{
module Mymod
  require 'date'
  RubyDate = Date
  Date = nil      
  class ClassA
    class Date < Mymod::ClassA
      def initialize
        today = RubyDate.today # get today's date from Ruby's Date class
        puts "Today's date is #{today.to_s}"
      end
    end
  end
end

Mymod::ClassA::Date.new # => Today's date is 2014-01-05
}}
-まあ素直にモデル名を変更したほうが良いかもしれない。モデル名をあまり一般的すぎる名前にするのはやめたほうがよさそう。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS