【问题标题】:uninitialized constant ActiveRecord::ConnectionAdapters::ConnectionManagement未初始化的常量 ActiveRecord::ConnectionAdapters::ConnectionManagement
【发布时间】:2023-03-31 05:32:01
【问题描述】:

我目前正在开发一个 sinatra 应用程序,并且在 postgresql 与 sinatra 的连接方面遇到问题,我尝试执行以下命令:

耙数据库:创建

创建数据库但它会抛出此错误。

C:\Users\John\Documents\Registration_Sinatra>rake db:create
rake aborted!
NameError: uninitialized constant ActiveRecord::ConnectionAdapters::ConnectionManagement
C:/Users/John/Documents/Registration_Sinatra/app/app.rb:2:in `<top (required)>'
C:/Users/John/Documents/Registration_Sinatra/Rakefile:1:in `<top (required)>'
LoadError: cannot load such file -- sinatra/activerecord
C:/Users/John/Documents/Registration_Sinatra/app/app.rb:2:in `<top (required)>'
C:/Users/John/Documents/Registration_Sinatra/Rakefile:1:in `<top (required)>'
(See full trace by running task with --trace)

这是我的 app.rb

require 'sinatra'
require 'sinatra/activerecord'
require 'pg'
require './config/environments'
class RegistrationSinatra < ActiveRecord::Base
end 
get '/' do
erb :index
end

这是我的环境.rb

configure :development do
@DEFAULT_CONN = {database: 'development_registration_sinatra', user: 'postgres', password: 'secret123', host: 'localhost'}
db = URI.parse(ENV['DATABASE_URL'] || "postgres://#{@DEFAULT_CONN[:host]}/#{@DEFAULT_CONN[:database]}?user=#{@DEFAULT_CONN[:user]}")
ActiveRecord::Base.establish_connection(
:adapter  => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host     => @DEFAULT_CONN[:host],
:username => @DEFAULT_CONN[:user],
:password => @DEFAULT_CONN[:password],
:database => db.path[1..-1],
:encoding => 'utf8')
end

这是我的宝石文件

source 'https://rubygems.org'
ruby "2.2.2"
gem 'sinatra'
gem 'activerecord'
gem 'sinatra-activerecord'
gem 'tux'
gem 'pg'

还有我的 Rakefile

require './app/app'
require 'sinatra/activerecord/rake'

希望你们能指出我的示例应用程序有什么问题,以便我可以进步,谢谢。

【问题讨论】:

  • 您运行的是bundle install 还是bundle exec?如果是,那么bundle exec rake -T
  • 是的,我两者都做了,它也给了我一个错误。这是找不到 sinatra/activerecord
  • sinatra-activerecord改成sinatra/activerecord怎么样
  • 当我尝试捆绑安装时,它会引发另一个错误:在任何 gem 源中找不到 gem 'sinatra/activerecord x64-mingw32'
  • 抱歉,我是为 require sinatra-activerecord 说的,不在您的 gem 文件中。现在运行bundle install,然后运行bundle exec rake db:create

标签: ruby postgresql activerecord sinatra


【解决方案1】:

这里是解决方案:https://github.com/janko-m/sinatra-activerecord/pull/66

在您的 Gemfile 中,添加:

gem "activerecord", "&lt; 5.0.0"

运行bundle update,它会工作。

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 2015-02-24
    • 2020-10-13
    • 2017-05-14
    • 2017-07-07
    • 2023-01-13
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多