rails consoleでActiveRecord利用すると以下のようなエラーが見られました。
irb(main):001:0> User.first
/Users/katsuya/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:27: [BUG] Segmentation fault at 0x00000000000110
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
for more details.
Don't forget to include the above Crash Report log file in bug reports.
-- Control frame information -----------------------------------------------
c:0065 p:---- s:0284 e:000283 CFUNC :initialize
・・・
環境
macOS Sierra 10.12.3
Rails 5.0.0.1
sqlite 3.14.0
gem
gem 'sqlite3', '1.3.11'
解決方法1
gem 'sqlite3', '1.3.11'
を
gem 'sqlite3', '1.3.13'
(1.3.13以上)にしましょう。
解決方法2
どうしてもgem 'sqlite3', '1.3.11'
のまま利用したい場合はこちらの方法を利用してください。
①bundle config build.sqlite3 --with-sqlite3-dir=$(brew --prefix sqlite3)
を実行
②bundle install
をやり直します。
bundle config build.sqlite3について
bundle config build.sqlite3 --with-sqlite3-dir=$(brew --prefix sqlite3)
を実行すると
~/.bundle/config
に
BUNDLE_BUILD__SQLITE3: "--with-sqlite3-dir=/usr/local/Cellar/sqlite/3.17.0"
の行が追加されます。よって、もとに戻したい場合は、追加された行を削除すれば元に戻ります。
また、
bundle config build.sqlite3 --with-sqlite3-dir=$(brew --prefix sqlite3)
を実行せずに上記の行をアプリケーションのディレクトリの.bundle/congig
に追加することで、アプリケーションでのbundle
でだけ設定が反映させることも可能です。
参考
https://github.com/sparklemotion/sqlite3-ruby/issues/195
http://qiita.com/hmuronaka/items/88fb04e347a59d509e10
http://qiita.com/emahiro/items/ec3a875dbc671651d4c4
http://ruby.studio-kingdom.com/bundler/bundle_config/