JRuby не может использовать установленный мной адаптер

Я использовал 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:в establish_connection': Please install the jdbcmysql adapter:gem установить 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:inestablish_connection 'из / opt / jruby / lib / ruby ​​/ gems / 1.8 / gems / activerecord-2.3.8 / lib / active_record / connection_adapters / abstract / connection_specification.rb: 55: в establish_connection' from /opt/jruby/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:438:ininitialize_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:inrun 'из /home/tesmar/rails/statsheet/config/environment.rb:19 из / home / tesmar / rails / statsheet / config / environment .rb: 39: в 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:inrequire 'из скрипта / бегуна: 3


person tesserakt    schedule 01.02.2011    source источник
comment
Я должен добавить, что database.yml указывает на правильный адаптер.   -  person tesserakt    schedule 02.02.2011
comment
Я также должен добавить, что не понимаю, как здесь работает голосование. Например: я проголосовал против ответа Декса на -1, голосуя за Марка. Теперь dex показывает 0, а Mark показывает соответствующий 1. Мой голос не засчитывается?   -  person tesserakt    schedule 04.02.2011


Ответы (4)


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

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

person Mark Thomas    schedule 01.02.2011
comment
Я сделал. используя JRUBY. Он указан как установленный. - person tesserakt; 02.02.2011
comment
как jruby -S список драгоценных камней, так и список драгоценных камней. поскольку символические ссылки rvm связывают гем с версией jruby, он дает тот же результат. - person tesserakt; 02.02.2011
comment
Вы используете IDE, например NetBeans? Ваша среда выполнения может отличаться от вашей среды rvm. - person Mark Thomas; 02.02.2011
comment
Вы знаете, это плохой тон - отвергать ответы, прежде чем найдешь решение своей проблемы. - person Mark Thomas; 02.02.2011
comment
Привет, Марк, я ценю совет; однако его совет не имел отношения к моей проблеме. У меня нет проблем с моим файлом database.yml, скорее, я не могу найти гем, который я уже установил. - person tesserakt; 02.02.2011
comment
Я не использую netbeans, только Ubuntu 10.04 + VIM. Я даже скопировал файлы гемов в гем ActiveDirectory, и эта ошибка прошла, но была заменена ошибкой не может найти Java-класс com.mysql. Таким образом, это становится проблемой Java. Где должен быть гем для установки класса Java для адаптера mysql? - person tesserakt; 02.02.2011
comment
Я понял. Мне пришлось загрузить файл JAR после копирования вручную всех файлов rb в гем активной записи (файлы rb из гемов activerecord-jdbcmysql и activerecord-jdbc). Затем я помещаю файл JAR в каталог / opt / jruby / lib, и он работает! Woohoo! - person tesserakt; 02.02.2011
comment
Я пошел дальше и сам ответил на вопрос, но спасибо за ваш вклад. - person tesserakt; 02.02.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
person yxhuvud    schedule 10.02.2011
comment
Понятия не имею, это было просто скопировано. Но если бы я догадался, я бы предположил, что jdbc-mysql-gem не предоставляет 'require jdbc-mysql' - person yxhuvud; 26.03.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' %>
person Dex    schedule 01.02.2011
comment
Спасибо, Декс, но я не это ищу. - person tesserakt; 02.02.2011
comment
Если вы сначала использовали RVM 1.9.2, а затем попытались использовать jRuby, вам также необходимо удалить свой Gemfile.lock и повторно запустить bundle install. Кроме того, если вы используете rvm, мне пришлось создать отдельный гемсет перед запуском сборщика. - person Dex; 02.02.2011
comment
Когда вы запускаете команды, лучше всего запускать их также с jruby -S. - person Dex; 02.02.2011
comment
что вы подразумеваете под отдельным набором драгоценных камней? Сначала я использовал JRuby, потом 1.9.2. Это также происходит, когда я обычно устанавливаю JRUby (без RVM) и использую jruby -S для всех своих команд. Этот действительно сбил меня с толку. - person tesserakt; 02.02.2011
comment
Спасибо, Декс, за ваши предложения. Действительно, существуют отдельные гемсеты, но проблема, которую я обнаружил, описана ниже. - person tesserakt; 04.02.2011

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

person tesserakt    schedule 02.02.2011
comment
Я все еще утверждаю, что в вашем окружении есть что-то странное. Установка gem должна работать без копирования файлов .rb. - person Mark Thomas; 02.02.2011
comment
Это возможно, но я точно выполнил инструкции RVM. Я могу предоставить дамп ENV, если это необходимо (или если вы думаете, что это будет полезно), но большинство других вещей работают хорошо (например, ruby ​​1.9 и system ruby). - person tesserakt; 03.02.2011
comment
Вы упомянули, что я скачал файл JAR? Не могли бы вы помочь понять, какой файл JAR, а также точные шаги, которые вы выполнили для решения этой проблемы? - person Kinjal Doshi; 04.08.2015