JRuby не может использовать адаптер, который я установил - PullRequest
2 голосов
/ 02 февраля 2011

Я использовал rvm для установки jruby (1.5.6) и установил все мои драгоценные камни просто отлично. Я могу запускать простые задачи рельсов, такие как

скрипт / бегун 'ставит 1'

и вывод в порядке. Как только я попал в базу данных, я получаю сообщение об ошибке. Я удалил / переустановил гем activerecord-jdbcmysql-adapter, 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 бит)

Ruby 1.9.2 с RVM прекрасно работает!

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 (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 create_connection ' из /opt/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in establish_connection' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:438:in initialize_database ' из /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:141:in process' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in run ' из /home/tesmar/rails/statsheet/config/environment.rb:19 из /home/tesmar/rails/statsheet/config/environment.rb:39:in require' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/commands/runner.rb:39 from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/commands/runner.rb:3:in require ' от сценария / бегуна: 3

Ответы [ 4 ]

1 голос
/ 10 февраля 2011

Как выглядит ваш гемфайл?

Моя выглядит так и работает:

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
1 голос
/ 02 февраля 2011

Как говорится в сообщении об ошибке, вам нужно установить гем activerecord-jdbcmysql-adapter.

Возможно, что ваша среда выполнения отличается от вашей среды rvm. Я видел, как это происходит с IDE, такими как NetBeans.

0 голосов
/ 02 февраля 2011

Я понял это. Мне пришлось скачать файл JAR, после того, как вручную скопировал все файлы rb в гем активных записей (файлы rb из гемов activerecord-jdbcmysql и activerecord-jdbc). Затем я помещаю файл JAR в каталог / opt / jruby / lib, и он работает! Woohoo!

0 голосов
/ 02 февраля 2011

Если вы перемещаетесь между 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' %>
...