2015-12-31 3 views
0

У меня было приложение Ruby Sinatra и gem pg, чтобы использовать некоторые приложения с открытым исходным кодом Java, я переключился на jruby. Это вывод для jruby -S rake db:migrate.JRuby JDBC setup для rake db: migrate task

NoMethodError: undefined method `get_oid_type' for #<ActiveRecord::ConnectionAdapters::JdbcAdapter:0x294f9d50> 
api/tasks/db.rake:18:in `block in (root)' 

грабли файл

require 'active_record' 
require 'jdbc/postgresql' 

namespace :db do 
    task(:environment) do 
    ActiveRecord::Base.establish_connection(
    :adapter => 'jdbc', 
    :driver => 'org.postgresql.Driver', 
    :url => 'jdbc:postgresql:db_name', 
    :username => 'username', 
    :password => 'password' 
    ) 
    end 

    desc 'Migrate the MOT core models (options: VERSION=x, VERBOSE=false)' 
    task :migrate => :environment do 
    ActiveRecord::Migration.verbose = true 
    ActiveRecord::Migrator.migrate "#{File.dirname(__FILE__)}/../db/migrate", ENV['VERSION'] ? ENV['VERSION'].to_i : nil 
    end 

    desc 'Rolls the schema back to the previous version of MOT core model(specify steps w/ STEP=n).' 
    task :rollback => :environment do 
    step = ENV['STEP'] ? ENV['STEP'].to_i : 1 
    ActiveRecord::Migrator.rollback "#{File.dirname(__FILE__)}/../db/migrate", ENV['VERSION'] ? ENV['VERSION'].to_i : step 
    end 
end 

db.rake: # 18

ActiveRecord :: Migrator.migrate «# {File.dirname (FILE)} /../ db/migrate ", ENV ['VERSION']? ENV ['VERSION']. To_i: nil

Я бегу postgresql с jdbc.

UPDATE

добавляю postgresql.jar к моему JRuby пути (JRuby, установленного на варку в моем Mac OS), и я получаю ту же ошибку. Я также удалил файл jar, и у меня был драйвер, который не нашел ошибку.

Благодарим за помощь.

ответ

-1

Я нашел решение.

Сначала убедитесь, что у вас есть следующее в вашем Gemfile

gem 'activerecord-jdbc-adapter', :require => 'arjdbc' 
gem 'activerecord-jdbcpostgresql-adapter' 

затем в вашем дб мигрирует задачу это установка для окружающей среды:

task(:environment) do 
    ActiveRecord::Base.establish_connection(
    :adapter => 'jdbcpostgresql', 
    :driver => 'org.postgresql.Driver', 
    :url => 'jdbc:postgresql://localhost/YOUR_DATABASE_NAME' 
    ) 
    end 

Также это database.yaml для развития:

development: 
    adapter: jdbcpostgresql 
    driver: org.postgresql.Driver 
    encoding: unicode 
    url: jdbc:postgresql://localhost/YOUR_DATABASE_NAME 
    username: USER_NAME 
    password: PASSWORD 

Наслаждайтесь JDBC с JRuby по применению Синатра !!!!

+0

Я действительно не понимаю, кто дал -1 этому, так как для меня это работало 100%, –

0

просто используйте адаптер: postgresql в вашей конфигурации, и он должен работать нормально.

+0

Это не работает для меня, и мое решение работает на 100%. –

+0

ваш звонок - проблема в том, что вы дублируете конфигурацию своей базы данных, которая, скорее всего, вас укусит. по сути, проблема заключается в загрузке задач AR, которые работают с MRI, а не из доступных в AR-JDBC ... поэтому «хороший» ответ должен решить это! – kares

+0

В любом случае, я не принимаю это решение, так как это не работает для меня. –