gpt4 book ai didi

mysql - Ruby:Rails:MRI 和 JRuby

转载 作者:数据小太阳 更新时间:2023-10-29 08:24:45 26 4
gpt4 key购买 nike

我已经将 Ubuntu 11.04 上的 Rails 3.0.10/MRI 应用移植到 Ubuntu 11.04 上的 JRuby 1.6.4。我的目标是到达一个地方,我只需执行以下操作即可在 JRuby 下运行该应用程序。

railsapp1> rbenv local jruby-1.6.4
railsapp1> rails server

为了让应用程序在 MRI 下正常工作,

railsapp1> rbenv local 1.9.2-p290
railsapp1> rails server

这个问题的第一部分是解决 gem 。为了使这个过程在不更改代码的情况下工作,我在 Rails Gemfile 中执行了以下操作

platforms :mri do
gem 'mysql2', '~>0.2.11'
end
platforms :jruby do
gem 'jruby-openssl'
gem 'activerecord-jdbcmysql-adapter'
end

这些 gem 语句是使用蛮力方法获得的,方法是使用 MRI/JRuby 和 SQLite/MySQL 的不同组合创建虚拟 rails 应用程序,然后从为每个组合生成的 Gemfile 中获取 gem 语句。

但这并不能完全做到。我的 config/database.yml 文件如下所示:

development:
adapter: mysql2
database: doodad
username: doodad
password: doodad
host: localhost

此 config/database.yml 文件仅适用于 MRI 版本。对于 JRuby 版本,config/database.yml 文件如下所示:

development:
adapter: mysql
database: doodad
username: doodad
password: doodad
host: localhost

即文件之间的唯一区别是数据库适配器的名称(mysql 与 mysql2)。有没有办法告诉 database.yml 文件或系统初始化程序根据 Ruby 环境是 MRI 还是 JRuby 选择适配器?

最佳答案

您可以在 database.yml 文件中使用 ERB:

development:
adapter: <%= defined?(JRUBY_VERSION) ? "mysql" : "mysql2" %>
...

关于mysql - Ruby:Rails:MRI 和 JRuby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7813748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com