Настройки Синатры потеряны в области видимости

Для приложения 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 неизвестен.

Кто-то знает, что происходит?

Благодарю.

1 ответ

Если вы используете Ruby > 1.9.2, require не смотрит на текущий каталог.

Вы должны попробовать использовать require_relative 'config/database' или добавьте текущий каталог в путь загрузки: $LOAD_PATH << '.',

Другие вопросы по тегам