ruby - "Please install the mysql2 adapter"

标签 ruby rubygems bundler redmine mysql2

我正在尝试遵循此Redmine setup tutorial 。当我启动服务器时,我输入 sudo Rails server 并收到以下错误:

Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (mysql2 is not part of the bundle. Add it to Gemfile.) (LoadError)

我的 Gemfile 的相关部分内容如下:

....
if File.exist?(database_file)
database_config = YAML::load(ERB.new(IO.read(database_file)).result)
adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
if adapters.any?
  adapters.each do |adapter|
    case adapter
    when /mysql/
      gem "mysql", "~> 2.8.1", :platforms => [:mri_18, :mingw_18]
      gem "mysql2", "~> 0.3.11", :platforms => [:mri_19, :mingw_19]
      gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
...

并且Gemfile.lock包含mysql2:

...
multi_json (1.5.0)
mysql (2.8.1)
mysql2 (0.3.11)
net-ldap (0.3.1)
...

我的database.yml 文件包含以下内容:

...
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: ****
  password: ****

development:
  adapter: mysql2
  database: redmine_development
  host: localhost
  username: ****
  password: ****
  encoding: utf8
...

运行bundle install似乎成功,但输出中未列出mysql2,which mysql2什么也没返回,并且bundle show mysql2返回在当前包中找不到 gem 'mysql2'。

我已经卸载并重新安装了 mysql2 gem,每次都明显成功。

我已经阅读了其他 stackoverflow 问题上类似问题的描述,但他们的解决方案都没有解决我的问题。

最佳答案

如果 bundle 生成的 Gemfile.lock 文件中未包含 mysql2,您将收到此错误。虽然 Gemfile 用于管理依赖项,但锁定文件是 Rails 应用实际加载的文件。

这是一个比我以前见过的更详细的 Gemfile(我一般不熟悉 Redmine)- 这是从哪里来的?它似乎不是来自最新的稳定来源。如果您知道您将使用 mysql2,我认为您没有任何理由需要 Gemfile 来解析数据库配置。无论出于何种原因,它都无法正确读取database.yml 文件。

尝试在任何 block 或循环之外添加 gem 'mysql2' 并再次运行 bundle

关于ruby - "Please install the mysql2 adapter",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14639670/

相关文章:

ruby - 如何从 Ruby 中的 URL 中删除多个尾部斜杠

ruby - 在 ruby​​ 中按数字顺序对数字进行分组

ruby-on-rails-3 - bundler install RAILS_ENV=test 再次安装所有gem?

ruby - Heroku 推送被拒绝,无法通过 Bundler 安装 gems

ruby-on-rails - Heroku 推送被拒绝,无法通过 Bundler 安装 gem

ruby - 使用 Bundler 为什么要关心 RVM 的 Gemset 特性?

ruby - bundle gem : rspec says 'No examples found'

ruby-on-rails - 如何覆盖 View 中的策略类

ruby-on-rails - Heroku on Rails - 无效的 DATABASE_URL

ruby-on-rails - 获取所有 gem 的列表