Activerecord 如何在我的Sinatra应用程序中使用Ruby gem中的模块
我正在开发一个未发布的gem,它在Rails中正常工作。它有一个需要包含在ActiveRecord::基类中的模块 我的Sinatra应用程序如下所示:Activerecord 如何在我的Sinatra应用程序中使用Ruby gem中的模块,activerecord,rubygems,sinatra,sinatra-activerecord,Activerecord,Rubygems,Sinatra,Sinatra Activerecord,我正在开发一个未发布的gem,它在Rails中正常工作。它有一个需要包含在ActiveRecord::基类中的模块 我的Sinatra应用程序如下所示: # app.rb require 'rubygems' require 'sinatra' require 'sinatra/activerecord' set :database, "sqlite3:project-name.sqlite3" get '/' do @users = User.all erb :index end
# app.rb
require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'
set :database, "sqlite3:project-name.sqlite3"
get '/' do
@users = User.all
erb :index
end
class User < ActiveRecord::Base
end
source 'https://rubygems.org'
gem 'activerecord'
gem 'sinatra-activerecord'
gem 'sqlite3'
gem 'rake'
gem "my_module", path: "../my_module"
PATH
remote: ../my_module
specs:
my_module (1.49.0)
activerecord (>= 4.2)
GEM
remote: https://rubygems.org/
specs:
activemodel (6.0.2.1)
activesupport (= 6.0.2.1)
activerecord (6.0.2.1)
activemodel (= 6.0.2.1)
activesupport (= 6.0.2.1)
activesupport (6.0.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2)
concurrent-ruby (1.1.5)
i18n (1.7.0)
concurrent-ruby (~> 1.0)
minitest (5.13.0)
mustermann (1.0.3)
rack (2.0.8)
rack-protection (2.0.7)
rack
rake (13.0.1)
sinatra (2.0.7)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.7)
tilt (~> 2.0)
sinatra-activerecord (2.0.14)
activerecord (>= 3.2)
sinatra (>= 1.0)
sqlite3 (1.4.2)
thread_safe (0.3.6)
tilt (2.0.10)
tzinfo (1.2.5)
thread_safe (~> 0.1)
zeitwerk (2.2.2)
PLATFORMS
ruby
DEPENDENCIES
activerecord
rake
my_module!
sinatra-activerecord
sqlite3
BUNDLED WITH
2.0.2
我的Gemfile.lock如下所示:
# app.rb
require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'
set :database, "sqlite3:project-name.sqlite3"
get '/' do
@users = User.all
erb :index
end
class User < ActiveRecord::Base
end
source 'https://rubygems.org'
gem 'activerecord'
gem 'sinatra-activerecord'
gem 'sqlite3'
gem 'rake'
gem "my_module", path: "../my_module"
PATH
remote: ../my_module
specs:
my_module (1.49.0)
activerecord (>= 4.2)
GEM
remote: https://rubygems.org/
specs:
activemodel (6.0.2.1)
activesupport (= 6.0.2.1)
activerecord (6.0.2.1)
activemodel (= 6.0.2.1)
activesupport (= 6.0.2.1)
activesupport (6.0.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
zeitwerk (~> 2.2)
concurrent-ruby (1.1.5)
i18n (1.7.0)
concurrent-ruby (~> 1.0)
minitest (5.13.0)
mustermann (1.0.3)
rack (2.0.8)
rack-protection (2.0.7)
rack
rake (13.0.1)
sinatra (2.0.7)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.7)
tilt (~> 2.0)
sinatra-activerecord (2.0.14)
activerecord (>= 3.2)
sinatra (>= 1.0)
sqlite3 (1.4.2)
thread_safe (0.3.6)
tilt (2.0.10)
tzinfo (1.2.5)
thread_safe (~> 0.1)
zeitwerk (2.2.2)
PLATFORMS
ruby
DEPENDENCIES
activerecord
rake
my_module!
sinatra-activerecord
sqlite3
BUNDLED WITH
2.0.2
当我使用require
语句或
uninitialized constant User::MyModule (NameError)
如果我删除需要 如果我使用
bundle exec ruby app.rb
而不是
ruby app.rb
重要的是,在回答问题时要做的不仅仅是扔掉代码。指向文档和引用最重要的信息有助于教育那些在未来寻找类似解决方案的人,这就是为什么存在这样的问题。有关更多信息,请参阅。