Rails bundle只部署了几个gem

时间:2011-02-24 16:15:49

标签: ruby-on-rails ruby bundler

我的rails应用程序在共享主机上运行。我无法访问命令行,无法运行bundle命令。我可以运行一些预先选择的rake命令。

在我的开发机器上,我已经完成了bundle install --deployment,所以我的所有宝石都在供应商/包中。

然而,问题是我的开发机器与我的共享主机(32/64位)不兼容,因此mysql2 gem的原生扩展在共享主机上不起作用。但共享主机确实安装了mysql2 gem。

如果我从Gemfile中删除'mysql2',我会收到此错误:!!! Missing the mysql2 gem. Add it to your Gemfile: gem 'mysql2' (< =这是因为我在数据库中将适配器设置为mysql而不是mysql2。 yml:

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。

  1. 这是否可以使用bundler?

  2. 这个问题的最佳解决方案是什么?

  3. 感谢。

2 个答案:

答案 0 :(得分:0)

检查您的database.yml文件。确保您没有提到您的环境中没有安装的适配器。

答案 1 :(得分:0)

您是否检查了gemlock文件中的-x86 gem引用?我有一个类似的问题从Windows XP部署到64位ubuntu。修改这些以删除-x86部分并再次运行bundle install,如果所有库都在实例上,则应构建64位本机gem。