我正在尝试遵循此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/