Rails/トラブルシューティング
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Rails/トラブルシューティング);
*目次 [#q70d8e0f]
#contents
*関連ページ [#sc06f186]
-[[Rails]]
*参考情報 [#d9257280]
*Bundler関連 [#f554662e]
**「Can't find gem bundler (>= 0.a) with executable bundl...
-2019/01/24(木)現在、bundle installで以下のようなエラーが...
Can't find gem bundler (>= 0.a) with executable bundle (...
-[[Bundler: An update on the Bundler 2 release:https://bu...
-以下のようにBundler 1.x系の最新版をインストールしておく。
gem install bundler -v '1.17.3'
**Macでlibv8/therubyracerをインストールしようとしてエラー...
***参考情報 [#ub668d86]
-[[Yosemite で libv8 と therubyracer をインストールする:h...
-[[Kamiya54::Memo - [備忘録] Yosemiteにしてからbundle ins...
***現象 [#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'...
-libv8はインストールできるのだが、therubyracerがどうして...
-apple-gccをインストールする方法が提唱されているがこれは...
***解決 [#k60819df]
-Gemfileの指定を以下のように変更。
#pre{{
gem 'therubyracer', '0.12.1'
gem 'libv8', '3.16.14.11'
}}
-このあと「bundle update」しないとだめなので注意。gem 'li...
-今後のことを考え検証用のデモプロジェクト「ruby-therubyra...
**We're sorry, but something went wrong. [#v137d624]
-画面に表示された場合、アプリログを確認する(log/productio...
**Uncaught exception: Specified 'mysql2'…(2015/10/28) [#t...
-正確には以下のようなエラーが発生する
Uncaught exception: Specified 'mysql2' for database ada...
-[[mysql2 gem v0.4.0 doesn't work · Issue #21544 ...
gem 'mysql2', '~> 0.3.18'
-Rails 5.1.5でも発生した。その場合いかのように指定。
gem 'mysql2', '>= 0.3.18', '< 0.5'
**gitでブランチを作成してmergeしようとするとコンフリクト...
-[[gitマージのコンフリクトで片方ブランチのファイル変更内...
-どちらかにあわせてあとでbundle updateしたほうが簡単。
*モデル [#o741028f]
**ActiveRecord::UnknownAttributeReference [#c67e6248]
-Ransackのorderで発生。
ActiveRecord::UnknownAttributeReference (Query method ca...
-rankをシングルクォートで囲んでいるせい?もしくはDESCのせ...
-とりあえず以下のようにしてしのぐ。
…result.order(Arel.sql("date DESC, 'rank'")).page(params...
**モデルのコレクションクラスでcountが動作しない [#k22fb829]
-[[ruby on rails - Array.count with block does not return...
-なぜならhas_manyなどで関連付けられたコレクションクラスは...
*コントローラー [#b3173f64]
**コントローラーのメソッドが呼ばれない [#m7bef2d0]
-コントローラーのメソッドがprivateになっていないか注意。
-privateを上の方に追加するとそれ以降privateとみなされてし...
*ビュー [#v1f7d57c]
**ビューが更新されない [#k6484ed8]
-form_withを使っている場合、「remote:true」になっている場...
-Rails 6.1以降は「remote:false」だが、アップグレードした...
**レイアウトが適用されない [#f44340fe]
-コントローラーでinitializeをオーバーライドしていないか確...
-initializeする場合、以下のようにsuperを呼び出さないとレ...
#pre{{
def initialize
super
# 初期化処理
end
}}
*一般 [#f0cd3856]
** rails generateがフリーズする [#tc3017d6]
-[[rails generate コマンドの反応が無いので対処した。 | Lo...
-Control-Cで止めると「/spring/client/run.rb:117:in `gets'...
-Springを止めればいいらしいが、なぜSpringのエラーが発生す...
#pre{{
$ bundle exec spring stop
$ bundle exec rails g impressionist
}}
-[[railsのコマンドが動かない時はspringを(stop|kill)してみ...
** rails consoleが起動しない [#n78c8950]
-以下のコマンドを実行すると固まる
bundle exec rails console
-[[Ruby on Rails console is hanging when loading - Stack ...
$ bin/spring stop
$ bundle exec rails console
**プロダクション環境で全く動かない [#na595a2d]
-サーバーを再起動してもエラー画面だけ表示されて一切動いて...
-apacheのログなどみても何もわからない場合デバッグ表示を有...
-めんどくさい場合まずはじめにMySQLが動いているかどうか確...
-MySQLが動いていないと当然Railsも動かない。
**プロダクション環境でapplication.css(実際はapplication-...
-「config.assets.compile = true」ついでに「config.public_...
-[[ruby on rails - Assets not compiling - Stack Overflow:...
**プロダクション環境でルートページが表示されない(Rails5.1...
-http://localhost:3000で「The page you were looking for d...
#pre{{
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have mo...
}}
-エラーメッセージを確認すると「ActionController::RoutingE...
-文字通りルーティングが設定されていないのが原因。developm...
-public/index.htmlを表示させたい場合はprouction.rbを変更...
config.public_file_server.enabled = true
**プロダクション環境で「Could not find a JavaScript runti...
-[[rails sコマンド実行時に「Could not find a JavaScript r...
-本番環境でassets:precompileタスクを実行するときに発生す...
-そのときに使われるExecJSはtherubyracerやnodejsなどいくつ...
-therubyracerはコンパイル時にエラーがでることが多いので、...
-CentOS 6の場合epelのをインストールする。
sudo yum install nodejs --enablerepo=epel
-これだけだと以下のようなエラーが表示されるかもしれない。
node: error while loading shared libraries: libuv.so.0.1...
-nodejsにlibuvへの依存関係が漏れているらしいのでlibuvもイ...
sudo yum install libuv
**プロダクション環境で画像が表示されなし [#sa53bd77]
-assetのコンパイルをしない場合以下のように設定する
#pre{{
config.serve_static_files = true
config.assets.compile = true
}}
**プロダクション環境でCSSが適用されない [#j3bf70e1]
-public/assetsが古い可能性あり。
-一端削除してやりなおしてみる(precompileしない環境でも古...
**DEPRECATION WARNING: The configuration option `config.s...
-development.rbで「config.serve_static_assets = true」を...
**クラス名が衝突する [#mb248a4d]
-Ruby一般の場合自作クラスをmoduleを使ってネームスペース内...
-ただしRailsの場合モデル名を自由にmodule内に入れることが...
-無理矢理するなら以下のような方法が使える?[[My class nam...
#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 Ru...
puts "Today's date is #{today.to_s}"
end
end
end
end
Mymod::ClassA::Date.new # => Today's date is 2014-01-05
}}
-まあ素直にモデル名を変更したほうが良いかもしれない。モデ...
**デバッグ時にlib以下のクラスが自動リロードされない [#x90...
-基本的にconfig.rbに以下の設定を追加しておれば、Railsでは...
config.autoload_paths += Dir["#{Rails.root}/lib"] # 追加
-これがうまくいかない場合lib以下の.rbファイルで独自にrequ...
**プロダクション環境でlib以下のクラスが自動リロードできな...
-例えばバッチ処理を実行しようとすると以下のエラーが表示さ...
uninitialized constant Tasks (NameError)
-原因はRails 5でlibのオートロードの設定が変わったため。以...
config.autoload_paths += Dir["#{Rails.root}/lib"]
config.eager_load_paths += Dir["#{Rails.root}/lib"]
**Circular dependency detectedエラーが発生 [#x052a58d]
-マルチスレッド環境でRailsのautoloadがうまく働かないのが...
-require_dependencyで必要なファイルを手動ロードするのが良...
-lib関連ならばeager_load_pathsを追加するのもいいかもしれ...
config.autoload_paths += Dir["#{Rails.root}/lib"]
config.eager_load_paths += Dir["#{Rails.root}/lib"]
**サーバー起動時に「Could not find a JavaScript runtime....
-ExecJSがJavaScriptランタイムを見つけられないときに発生。
-[[rails/execjs: Run JavaScript code from Ruby:https://gi...
-しかたないのでmacportsでnpm6をインストールすると大丈夫だ...
sudo port install npm6
**Your bundle is locked to mimemagic (0.3.5), but that ve...
-mimemagicがライセンス問題で削除されたのが原因。
-railsが依存している可能性があるので最新にアップデートす...
*macOS Sierra対策 [#ecd4eb2b]
**rmagickがインストールできない [#n4070d5d]
-2017/01/27(金)現在、rmagick-2.16.0がImageMagick7に対応し...
-[https://github.com/rmagick/rmagick/issues/256 Now RMagi...
#pre{{
brew update
brew rm imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
}}
-ただしこれだとbrew doctorでkeg-onlyのエラーが表示される...
export PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/...
**nokogiriがインストールできない [#r7f668c1]
-システムライブラリを使わないとだめっぽい。
#pre{{
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
bundle config build.nokogiri --use-system-libraries=true ...
}}
**ld: library not found for -lssl [#n9785364]
-mysql2をインストールしようとしたらエラー。
-[[mysql - Error when trying to install app with mysql2 g...
-以下のコマンドを実行する。
xcode-select --install
**全般設定 [#d38245a7]
-therubyracer、rmagick、nokogiriのバージョン指定を外す。
-libv8は直接指定しない。
*macOS Sierraの古い情報 [#v4dcdfa1]
**../src/scanner.h:444:5: error: unused typedef '__Static...
-macOS Sierra環境で発生。libv8のバージョンを固定していた...
**Don't know how to set rpath on your system, if MySQL li...
-linking shared-object mysql2/mysql2.bundle
-macOS Sierra環境で発生。[[RailsプロジェクトでMySQLがbund...
$ bundle config --local build.mysql2 "--with-ldflags=-L/...
-もしくは以下のコマンドでもいいらしい
xcode-select --install
**Can't install RMagick 2.13.4. Can't find MagickWand.h [...
-macOS Sierra環境で発生。[[Now RMagick 2.15.4 can't be bu...
#pre{{
brew rm imagemagick
brew install imagemagick@6
PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/pkgconfi...
}}
-bundlerを使うときはexportするしかない?そうすると他のパ...
**Nokogiriがインストールできない [#pe2784fc]
-ERROR: cannot discover where libxml2 is located on your ...
-brew install libxml2は効果なし。以下のコマンドを試してみ...
xcode-select --install
*Ruby 2.4関連 [#m0429146]
**Uncaught exception: cannot load such file -- xmlrpc/cli...
-[[ubuntu - Ruby fog gem causing server not to run: canno...
gem 'xmlrpc'
*Debian 8 Jessie [#p7d35d04]
**ExecJS::RuntimeUnavailable: Could not find a JavaScript...
-Debian 8では古いnodejsしか使えないのが原因。
-公式リポジトリ[[nodesource/distributions: NodeSource Nod...
#pre{{
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs
}}
終了行:
&tag(Rails/トラブルシューティング);
*目次 [#q70d8e0f]
#contents
*関連ページ [#sc06f186]
-[[Rails]]
*参考情報 [#d9257280]
*Bundler関連 [#f554662e]
**「Can't find gem bundler (>= 0.a) with executable bundl...
-2019/01/24(木)現在、bundle installで以下のようなエラーが...
Can't find gem bundler (>= 0.a) with executable bundle (...
-[[Bundler: An update on the Bundler 2 release:https://bu...
-以下のようにBundler 1.x系の最新版をインストールしておく。
gem install bundler -v '1.17.3'
**Macでlibv8/therubyracerをインストールしようとしてエラー...
***参考情報 [#ub668d86]
-[[Yosemite で libv8 と therubyracer をインストールする:h...
-[[Kamiya54::Memo - [備忘録] Yosemiteにしてからbundle ins...
***現象 [#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'...
-libv8はインストールできるのだが、therubyracerがどうして...
-apple-gccをインストールする方法が提唱されているがこれは...
***解決 [#k60819df]
-Gemfileの指定を以下のように変更。
#pre{{
gem 'therubyracer', '0.12.1'
gem 'libv8', '3.16.14.11'
}}
-このあと「bundle update」しないとだめなので注意。gem 'li...
-今後のことを考え検証用のデモプロジェクト「ruby-therubyra...
**We're sorry, but something went wrong. [#v137d624]
-画面に表示された場合、アプリログを確認する(log/productio...
**Uncaught exception: Specified 'mysql2'…(2015/10/28) [#t...
-正確には以下のようなエラーが発生する
Uncaught exception: Specified 'mysql2' for database ada...
-[[mysql2 gem v0.4.0 doesn't work · Issue #21544 ...
gem 'mysql2', '~> 0.3.18'
-Rails 5.1.5でも発生した。その場合いかのように指定。
gem 'mysql2', '>= 0.3.18', '< 0.5'
**gitでブランチを作成してmergeしようとするとコンフリクト...
-[[gitマージのコンフリクトで片方ブランチのファイル変更内...
-どちらかにあわせてあとでbundle updateしたほうが簡単。
*モデル [#o741028f]
**ActiveRecord::UnknownAttributeReference [#c67e6248]
-Ransackのorderで発生。
ActiveRecord::UnknownAttributeReference (Query method ca...
-rankをシングルクォートで囲んでいるせい?もしくはDESCのせ...
-とりあえず以下のようにしてしのぐ。
…result.order(Arel.sql("date DESC, 'rank'")).page(params...
**モデルのコレクションクラスでcountが動作しない [#k22fb829]
-[[ruby on rails - Array.count with block does not return...
-なぜならhas_manyなどで関連付けられたコレクションクラスは...
*コントローラー [#b3173f64]
**コントローラーのメソッドが呼ばれない [#m7bef2d0]
-コントローラーのメソッドがprivateになっていないか注意。
-privateを上の方に追加するとそれ以降privateとみなされてし...
*ビュー [#v1f7d57c]
**ビューが更新されない [#k6484ed8]
-form_withを使っている場合、「remote:true」になっている場...
-Rails 6.1以降は「remote:false」だが、アップグレードした...
**レイアウトが適用されない [#f44340fe]
-コントローラーでinitializeをオーバーライドしていないか確...
-initializeする場合、以下のようにsuperを呼び出さないとレ...
#pre{{
def initialize
super
# 初期化処理
end
}}
*一般 [#f0cd3856]
** rails generateがフリーズする [#tc3017d6]
-[[rails generate コマンドの反応が無いので対処した。 | Lo...
-Control-Cで止めると「/spring/client/run.rb:117:in `gets'...
-Springを止めればいいらしいが、なぜSpringのエラーが発生す...
#pre{{
$ bundle exec spring stop
$ bundle exec rails g impressionist
}}
-[[railsのコマンドが動かない時はspringを(stop|kill)してみ...
** rails consoleが起動しない [#n78c8950]
-以下のコマンドを実行すると固まる
bundle exec rails console
-[[Ruby on Rails console is hanging when loading - Stack ...
$ bin/spring stop
$ bundle exec rails console
**プロダクション環境で全く動かない [#na595a2d]
-サーバーを再起動してもエラー画面だけ表示されて一切動いて...
-apacheのログなどみても何もわからない場合デバッグ表示を有...
-めんどくさい場合まずはじめにMySQLが動いているかどうか確...
-MySQLが動いていないと当然Railsも動かない。
**プロダクション環境でapplication.css(実際はapplication-...
-「config.assets.compile = true」ついでに「config.public_...
-[[ruby on rails - Assets not compiling - Stack Overflow:...
**プロダクション環境でルートページが表示されない(Rails5.1...
-http://localhost:3000で「The page you were looking for d...
#pre{{
The page you were looking for doesn't exist.
You may have mistyped the address or the page may have mo...
}}
-エラーメッセージを確認すると「ActionController::RoutingE...
-文字通りルーティングが設定されていないのが原因。developm...
-public/index.htmlを表示させたい場合はprouction.rbを変更...
config.public_file_server.enabled = true
**プロダクション環境で「Could not find a JavaScript runti...
-[[rails sコマンド実行時に「Could not find a JavaScript r...
-本番環境でassets:precompileタスクを実行するときに発生す...
-そのときに使われるExecJSはtherubyracerやnodejsなどいくつ...
-therubyracerはコンパイル時にエラーがでることが多いので、...
-CentOS 6の場合epelのをインストールする。
sudo yum install nodejs --enablerepo=epel
-これだけだと以下のようなエラーが表示されるかもしれない。
node: error while loading shared libraries: libuv.so.0.1...
-nodejsにlibuvへの依存関係が漏れているらしいのでlibuvもイ...
sudo yum install libuv
**プロダクション環境で画像が表示されなし [#sa53bd77]
-assetのコンパイルをしない場合以下のように設定する
#pre{{
config.serve_static_files = true
config.assets.compile = true
}}
**プロダクション環境でCSSが適用されない [#j3bf70e1]
-public/assetsが古い可能性あり。
-一端削除してやりなおしてみる(precompileしない環境でも古...
**DEPRECATION WARNING: The configuration option `config.s...
-development.rbで「config.serve_static_assets = true」を...
**クラス名が衝突する [#mb248a4d]
-Ruby一般の場合自作クラスをmoduleを使ってネームスペース内...
-ただしRailsの場合モデル名を自由にmodule内に入れることが...
-無理矢理するなら以下のような方法が使える?[[My class nam...
#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 Ru...
puts "Today's date is #{today.to_s}"
end
end
end
end
Mymod::ClassA::Date.new # => Today's date is 2014-01-05
}}
-まあ素直にモデル名を変更したほうが良いかもしれない。モデ...
**デバッグ時にlib以下のクラスが自動リロードされない [#x90...
-基本的にconfig.rbに以下の設定を追加しておれば、Railsでは...
config.autoload_paths += Dir["#{Rails.root}/lib"] # 追加
-これがうまくいかない場合lib以下の.rbファイルで独自にrequ...
**プロダクション環境でlib以下のクラスが自動リロードできな...
-例えばバッチ処理を実行しようとすると以下のエラーが表示さ...
uninitialized constant Tasks (NameError)
-原因はRails 5でlibのオートロードの設定が変わったため。以...
config.autoload_paths += Dir["#{Rails.root}/lib"]
config.eager_load_paths += Dir["#{Rails.root}/lib"]
**Circular dependency detectedエラーが発生 [#x052a58d]
-マルチスレッド環境でRailsのautoloadがうまく働かないのが...
-require_dependencyで必要なファイルを手動ロードするのが良...
-lib関連ならばeager_load_pathsを追加するのもいいかもしれ...
config.autoload_paths += Dir["#{Rails.root}/lib"]
config.eager_load_paths += Dir["#{Rails.root}/lib"]
**サーバー起動時に「Could not find a JavaScript runtime....
-ExecJSがJavaScriptランタイムを見つけられないときに発生。
-[[rails/execjs: Run JavaScript code from Ruby:https://gi...
-しかたないのでmacportsでnpm6をインストールすると大丈夫だ...
sudo port install npm6
**Your bundle is locked to mimemagic (0.3.5), but that ve...
-mimemagicがライセンス問題で削除されたのが原因。
-railsが依存している可能性があるので最新にアップデートす...
*macOS Sierra対策 [#ecd4eb2b]
**rmagickがインストールできない [#n4070d5d]
-2017/01/27(金)現在、rmagick-2.16.0がImageMagick7に対応し...
-[https://github.com/rmagick/rmagick/issues/256 Now RMagi...
#pre{{
brew update
brew rm imagemagick
brew install imagemagick@6
brew link imagemagick@6 --force
}}
-ただしこれだとbrew doctorでkeg-onlyのエラーが表示される...
export PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/...
**nokogiriがインストールできない [#r7f668c1]
-システムライブラリを使わないとだめっぽい。
#pre{{
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
bundle config build.nokogiri --use-system-libraries=true ...
}}
**ld: library not found for -lssl [#n9785364]
-mysql2をインストールしようとしたらエラー。
-[[mysql - Error when trying to install app with mysql2 g...
-以下のコマンドを実行する。
xcode-select --install
**全般設定 [#d38245a7]
-therubyracer、rmagick、nokogiriのバージョン指定を外す。
-libv8は直接指定しない。
*macOS Sierraの古い情報 [#v4dcdfa1]
**../src/scanner.h:444:5: error: unused typedef '__Static...
-macOS Sierra環境で発生。libv8のバージョンを固定していた...
**Don't know how to set rpath on your system, if MySQL li...
-linking shared-object mysql2/mysql2.bundle
-macOS Sierra環境で発生。[[RailsプロジェクトでMySQLがbund...
$ bundle config --local build.mysql2 "--with-ldflags=-L/...
-もしくは以下のコマンドでもいいらしい
xcode-select --install
**Can't install RMagick 2.13.4. Can't find MagickWand.h [...
-macOS Sierra環境で発生。[[Now RMagick 2.15.4 can't be bu...
#pre{{
brew rm imagemagick
brew install imagemagick@6
PKG_CONFIG_PATH=/usr/local/opt/imagemagick@6/lib/pkgconfi...
}}
-bundlerを使うときはexportするしかない?そうすると他のパ...
**Nokogiriがインストールできない [#pe2784fc]
-ERROR: cannot discover where libxml2 is located on your ...
-brew install libxml2は効果なし。以下のコマンドを試してみ...
xcode-select --install
*Ruby 2.4関連 [#m0429146]
**Uncaught exception: cannot load such file -- xmlrpc/cli...
-[[ubuntu - Ruby fog gem causing server not to run: canno...
gem 'xmlrpc'
*Debian 8 Jessie [#p7d35d04]
**ExecJS::RuntimeUnavailable: Could not find a JavaScript...
-Debian 8では古いnodejsしか使えないのが原因。
-公式リポジトリ[[nodesource/distributions: NodeSource Nod...
#pre{{
# Using Debian, as root
curl -sL https://deb.nodesource.com/setup_10.x | bash -
apt-get install -y nodejs
}}
ページ名: