0

Sinatra アプリケーションの場合、config.ru は次のクラスで「run」を呼び出します。

class My_init < Sinatra::Base
    # Define all environments available in our app

    # Set the applications root directory

    # Define Root Path

    # Require all files in the App directory

    # Load database configuration

    require './config/database'

    ActiveRecord::Base.establish_connection(
      :adapter  => "mysql2",
      :host     => settings.db_host,
      :database => settings.db_name,
      :username => settings.db_username,
      :password => settings.db_password
    )
end

何らかの理由で、./config/database からロードされた設定は、このスコープからアクセスできません。「p settings.db_host」のように構成ファイル自体から設定を出力すると、すべて問題ありませんが、このクラス内では、settings.db_host が不明です。

誰かが何が起こっているのか知っていますか?

ありがとう。

4

1 に答える 1

0

Ruby > 1.9.2 を実行している場合require、現在のディレクトリを参照しません。

現在のディレクトリを使用するrequire_relative 'config/database'か、ロード パスに追加する必要があります: $LOAD_PATH << '.'

于 2012-10-31T19:08:03.200 に答える