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

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.

ОБНОВИТЬ

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

Спасибо за вашу помощь.

0
Bahador Biglari 1 Янв 2016 в 00:45

2 ответа

Лучший ответ

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

Сначала убедитесь, что в вашем 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 on Sinatra !!!!

-1
Bahador Biglari 1 Янв 2016 в 07:42

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

0
kares 1 Янв 2016 в 08:03