1

誰かのブログで見つけたサンプルに基づいて、次のコードを使用して、acmeアプリからSinatraアプリにrailsモデルを埋め込みました(または少なくとも埋め込みたと思います)。railsアプリが/Users/chris/acmeあり、Sinatraアプリがあり/Users/chris/acme/services/sinatra/sinatra.rbます。

RAILS_ROOT = '../..'
LIB_DIR = "#{RAILS_ROOT}/lib"
MODELS_DIR = "#{RAILS_ROOT}/app/models"

require 'active_support/dependencies'
ActiveSupport::Dependencies.autoload_paths += Dir["#{LIB_DIR}/**/"]
ActiveSupport::Dependencies.autoload_paths += Dir["#{MODELS_DIR}/"]

require 'active_support/all'
require 'active_record'
::ActiveRecord::Base.establish_connection(
    YAML.load(File.read(
    File.expand_path('config/database.yml', RAILS_ROOT)))["development"])

require 'sinatra'

get '/user' do
  "#{User.first.id}"
end

訪問するhttp://localhost:4567/userと、次のエラーが発生します。

LoadError - no such file to load -- util/versioning:
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `block in require'
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `block in load_dependency'
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:597:in `new_constants_in'
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:225:in `load_dependency'
/Users/chris/.rvm/gems/ruby-1.9.2-p320@acme/gems/activesupport-3.0.20/lib/active_support/dependencies.rb:242:in `require'
/Users/chris/acme/app/models/user.rb:2:in `<top (required)>'

の2行目はuser.rbですrequire 'util/versioning'。これは自動ロードされるべきでしたが、そうではありませんでした。

user.rb2行目をに変更するとrequire '/Users/chris/acme/lib/util/versioning'、すべてが機能し始めますが、もっと良い方法が必要ですよね?

4

2 に答える 2

1

の絶対パスを使用してみましたRAILS_ROOTか? お気に入り

RAILS_ROOT = '/Users/chris/acme'
于 2013-02-04T20:06:18.117 に答える
0

require 'util/versioning'fromを削除しましたが、 from withinuser.rbへの呼び出しを含め、正常に動作するようになりました。これは、相対または絶対のいずれかで機能します。で間違いなく使用しているライブラリを必要としない理由がわからないため、適切な使用方法を誤解しているようです。Util.Versioninguser.rbRAILS_ROOTrequireuser.rb

于 2013-02-04T22:39:17.857 に答える