我今天也遇到了类似的问题。这是我的一些日志:
Started POST "/users/sign_in" for 173.228.60.113 at 2015-09-29 15:53:47 +0000
MultiJson::AdapterError (Did not recognize your adapter specification (cannot load such file -- json/ext/parser).):
activesupport (3.2.3) lib/active_support/dependencies.rb:251:in `require'
activesupport (3.2.3) lib/active_support/dependencies.rb:251:in `block in require'
activesupport (3.2.3) lib/active_support/dependencies.rb:236:in `load_dependency'
activesupport (3.2.3) lib/active_support/dependencies.rb:251:in `require'
json (1.8.3) lib/json/ext.rb:13:in `'
json (1.8.3) lib/json/ext.rb:12:in `'
json (1.8.3) lib/json/ext.rb:9:in `'
bundle show(在 ec2 实例上)显示 json gem 的安装位置:
[ec2-user@ip-172-31-43-145 current]$ bundle show json
/usr/local/share/gems1.9/gems/json-1.8.3
在那个目录下面有一个文件ext/json/ext/parser/parser.so
这是一个原生扩展。我之前多次遇到过这些安装不正确的问题。我的解决方法是在lib/json/ext 中安装符号链接
命令如下所示:
ln -s ../../../ext/json/ext/parser/parser.so .
来自上述目录。
我还为 generator.so 添加了一个符号链接。连接到lib/json/ext 时执行的命令是:
ln -s ../../../ext/json/ext/generator/generator.so .
ext/json下还有一个目录叫fbuffer,但它只有一个.h文件,没有.so。
这解决了问题。我知道去哪里看,因为错误消息总是告诉您相对于核心 gem .rb 文件的路径,在本例中为 ext/json/json.rb
对于每次更新带有本机扩展的 gem 时都必须手动执行此操作,我一点也不高兴。如果有人能告诉我如何不必这样做,我会非常喜欢。但与此同时,这将解决它。