JRuby无法使用我安装的适配器

时间:2011-02-01 21:54:41

标签: ruby-on-rails jruby rvm

我使用rvm来安装jruby(1.5.6)并安装好我的所有宝石。我可以运行简单的rails任务,比如

script / runner'put 1'

并且输出很好。当我点击数据库时,我得到一个错误。我已经卸载/重新安装了activerecord-jdbcmysql-adapter gem,Jruby,rvm,JAVA_JDK。我已经正确设置了JRUBY_HOME和JAVA_HOME,但似乎没有任何效果。

有什么想法吗?

据我所知,我安装了Java JDK 1.6.0和1.5.0。 IT目前指向1.6.0。但由于所有其他宝石安装正确,我认为这完全是另一回事。

我在EC2上使用Ubuntu 10.04(64位)

带有RVM的Ruby 1.9.2非常棒!

nohup:忽略输入 /opt/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection': Please install the jdbcmysql adapter: gem install activerecord -jdbcmysql-adapter {{ 1}} establish_connection”     来自/opt/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in (no such file to load -- active_record/connection_adapters/jdbcmysql_adapter) (RuntimeError) from /opt/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in initialize_database'     来自/opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:141:in establish_connection' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:438:in run'     来自/home/tesmar/rails/statsheet/config/environment.rb:19     来自/home/tesmar/rails/statsheet/config/environment.rb:39:in process' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in require'     来自script / runner:3

4 个答案:

答案 0 :(得分:1)

正如错误消息所示,您需要安装activerecord-jdbcmysql-adapter gem。

您的执行环境可能与您的rvm环境不同。我已经看到这种情况发生在NetBeans等IDE上。

答案 1 :(得分:1)

你的gemfile怎么样?

我看起来像这样并且工作:

source 'http://rubygems.org'

gem 'rails', '3.0.4'


platforms :ruby do
  gem 'mysql2'
end

platforms :jruby do
  gem 'activerecord-jdbc-adapter'
  gem 'jdbc-mysql', :require => false
end

答案 2 :(得分:0)

如果你在jRuby和MRI之间往返,你可以在你的Gemfile中添加这样的东西:

if defined?(JRUBY_VERSION)
   gem 'jdbc-mysql'
   gem 'activerecord-jdbc-adapter'
   gem 'activerecord-jdbcmysql-adapter'
   gem 'warbler'
else
   gem 'mysql'
   gem 'mongrel'
end

然后,在您的database.yml中添加如下内容:

development:

    adapter: <%= defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql' %>

答案 3 :(得分:-2)

我明白了。在将所有rb文件手动复制到活动记录gem(来自activerecord-jdbcmysql和activerecord-jdbc gems的rb文件)之后,我不得不下载JAR文件。然后我将JAR文件放在/ opt / jruby / lib目录中,它可以工作!哇噢!