Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 环境相关全局变量的备选方案_Ruby On Rails_Ruby_Ruby On Rails 3_Mongodb - Fatal编程技术网

Ruby on rails 环境相关全局变量的备选方案

Ruby on rails 环境相关全局变量的备选方案,ruby-on-rails,ruby,ruby-on-rails-3,mongodb,Ruby On Rails,Ruby,Ruby On Rails 3,Mongodb,在我的RubyonRails项目中,有几个地方需要访问一个值,该值取决于RubyonRails是在哪个环境中启动的 具体来说,它是我需要连接到的数据库的名称 目前,我只想: MONGO_DB = "database_name" 在config/environments/.rb中 然后在代码中我可以调用类似于Mongo::Connection.new.db(Mongo\u db)的东西 在没有全局变量的情况下,有没有更好的方法?仅仅使用全局变量会让我感觉不对劲,尽管一旦应用程序启动,它们就不会改

在我的RubyonRails项目中,有几个地方需要访问一个值,该值取决于RubyonRails是在哪个环境中启动的

具体来说,它是我需要连接到的数据库的名称

目前,我只想:

MONGO_DB = "database_name"
config/environments/.rb

然后在代码中我可以调用类似于
Mongo::Connection.new.db(Mongo\u db)
的东西


在没有全局变量的情况下,有没有更好的方法?仅仅使用全局变量会让我感觉不对劲,尽管一旦应用程序启动,它们就不会改变

您可以将设置包装到类或模块中:

module Settings
   MONGO_DB = 'database_name'
end
然后通过以下方式访问它:

Settings::MONGO_DB

您可以将设置包装到类或模块中:

module Settings
   MONGO_DB = 'database_name'
end
然后通过以下方式访问它:

Settings::MONGO_DB

希望有更好的方法。从中找到灵感


将所有数据保存在文件中是处理多种情况的一种非常干净的方法。

希望有更好的方法。从中找到灵感


将所有数据保存在文件中是处理多种情况的一种非常干净的方法。

Rails已经为每个环境提供了一个配置文件,添加另一个文件似乎不需要冗余;那将是双倍加上药房。太好了。我真的不同意你的观点,我的S3和capistrano配置都有这样的文件。为了灵活性,请不要发明规则。啊,我想我明白你的意思了。您的意思是为您的MANGO配置设置YAML文件。我想你是说为每个environment.rb文件调用的所有配置添加一个YAML文件。我的错。编辑你的答案,我将取消投票。很抱歉没有翻译您刚才说的内容。YAML文件是一个很好的解决方案;它们易于理解,并且可以在不同语言之间移植。如果您有用于数据库的DSN或为数据文件设置位置,并且需要在多个应用程序之间共享该公共配置信息,那么请在主机上为包含商品的主配置文件定义一个特定目录。此外,如果您有一个事件循环,您可以定期检查该文件的上次修改日期,并在其发生更改时重新加载,从而允许您动态重新配置应用程序,而不是关闭并重新启动。Rails已经为每个环境提供了一个配置文件,添加另一个文件似乎不需要冗余;那将是双倍加上药房。太好了。我真的不同意你的观点,我的S3和capistrano配置都有这样的文件。为了灵活性,请不要发明规则。啊,我想我明白你的意思了。您的意思是为您的MANGO配置设置YAML文件。我想你是说为每个environment.rb文件调用的所有配置添加一个YAML文件。我的错。编辑你的答案,我将取消投票。很抱歉没有翻译您刚才说的内容。YAML文件是一个很好的解决方案;它们易于理解,并且可以在不同语言之间移植。如果您有用于数据库的DSN或为数据文件设置位置,并且需要在多个应用程序之间共享该公共配置信息,那么请在主机上为包含商品的主配置文件定义一个特定目录。此外,如果您有一个事件循环,您可以定期检查该文件的上次修改日期,如果文件发生更改,则重新加载该文件,从而允许您动态重新配置应用程序,而不是关闭并重新启动它们。