我的rails应用程序在共享主机上运行。我无法访问命令行,无法运行bundle命令。我可以运行一些预先选择的rake命令。
在我的开发机器上,我已经完成了bundle install --deployment
,所以我的所有宝石都在供应商/包中。
然而,问题是我的开发机器与我的共享主机(32/64位)不兼容,因此mysql2 gem的原生扩展在共享主机上不起作用。但共享主机确实安装了mysql2 gem。
如果我从Gemfile中删除'mysql2',我会收到此错误:(< =这是因为我在数据库中将适配器设置为mysql而不是mysql2。 yml:!!! Missing the mysql2 gem. Add it to your Gemfile: gem 'mysql2'
development:
adapter: mysql2
encoding: utf8
reconnect: false
database: db
pool: 5
username: user
password: pass
socket: /var/run/mysqld/mysqld.sock
(测试/制作相同)
如果我在我的Gemfile中保留gem 'mysql2'
,我会收到此错误(这是有道理的,因为原生扩展是在不同的机器上编译的:
/home/project/vendor/bundle/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.so: wrong ELF class: ELFCLASS32 - /home/project/vendor/bundle/ruby/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.so
如果我删除gem 'mysql2'
,我会:
Please install the mysql2 adapter: 'gem install activerecord-mysql2-adapter' (no such file to load -- active_record/connection_adapters/mysql2_adapter)
我想指定应从我自己的应用程序供应商/软件包目录加载哪些gem,以及从系统gem目录加载哪些gem。
这是否可以使用bundler?
这个问题的最佳解决方案是什么?
感谢。
答案 0 :(得分:0)
检查您的database.yml文件。确保您没有提到您的环境中没有安装的适配器。
答案 1 :(得分:0)
您是否检查了gemlock文件中的-x86 gem引用?我有一个类似的问题从Windows XP部署到64位ubuntu。修改这些以删除-x86部分并再次运行bundle install,如果所有库都在实例上,则应构建64位本机gem。