Sinatra设置在课程范围内丢失

时间:2012-10-31 15:18:42

标签: ruby scope sinatra settings

对于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 个答案:

答案 0 :(得分:0)

如果您正在运行Ruby&gt; 1.9.2,require不查看当前目录。

您应该尝试使用require_relative 'config/database'或将当前目录添加到加载路径:$LOAD_PATH << '.'