我有一个Rails 3应用程序,叫它"MyApp"。在我的配置环境生产。我看到这样的东西
MyApp::Application.configure do
config.log_level = :info
config.logger = Logger.new(config.paths.log.first, 'daily')
...or...
config.logger = Logger.new(Rails.root.join("log",Rails.env + ".log"),3,20*1024*1024)
所以,问题集中在术语和它们的意思…(或指向一些网站,我已经看过,但没有找到,解释这是如何工作的。)
- MyApp是一个模块吗?
- MyApp::Application is a…?什么,一个模块吗?
- MyApp:应用程序。配置是一种方法?
- config是一个变量?我如何在控制台上看到它?
- 配置。记录器是一个??
- config.paths.log。首先是……??在控制台,我可以看到"MyApp::Application.configure.config.paths.log"。但不知道这是什么意思,也不知道如何从中提取信息!?
一个问题是不是太多了?:)
我已经看了教程http://guides.rubyonrails.org/configuring.html,但它直接跳转到事情做什么。
一个六面问题!哦,我的。让我们咳咳开始。1希望我能得到6倍的赞?:)
1。MyApp是一个模块?
是的,它是一个模块。它充当与您的应用程序有关的所有内容的"容器"。例如,您可以这样定义一个类:
module MyApp
class MyFunClass
def my_fun_method
end
end
end
那么如果别人有MyFunClass
,它就不会干扰你的MyFunClass
。这是一种分离代码的好方法。
2。MyApp::应用程序是…?什么,一个模块吗?
MyApp::Application
实际上是一个继承自Rails::Application
的类。这做了很多事情,包括设置Rails.application
对象,它实际上是MyApp::Application
的一个实例,你可以做各种有趣的事情,比如向应用程序发出请求(在rails console
或rails c
会话中)。例如,以下代码将向应用程序的根路径发出一个虚拟请求,返回一个3大小的Array,它只是一个普通的Rack响应:
Rails.application.call(Rack::MockRequest.env_for("/"))
你也可以通过调用这个来获取应用程序的路由:
Rails.application.routes
定义MyApp::Application
的主要目的不是这些您可能永远不会使用的有趣的东西,而是您可以在config/application.rb
中定义特定于应用程序的配置。诸如筛选哪些参数、应用程序的时区或应该自动加载哪些目录之类的事情。
3。MyApp:应用程序。配置是一种方法?
确实是一个方法,它允许您在加载config/application.rb
之后向应用程序的配置添加进一步的配置选项。您可能在config/environments/development.rb
或该目录下的其他两个文件之一中看到过这种情况,但基本上它们都使用与前面链接到的配置指南中所示的相同选项。
4。配置是一个变量?我如何在控制台上看到它?
config
"变量"实际上是在Rails::Application
使用的代码中定义的方法,并返回一个非常简单的配置对象,该对象存储应用程序的配置。
要在控制台中访问它,只需使用Rails.application.config
。这将返回一个相当大的Rails::Application::Configuration
对象,供您观看。
5。配置。记录器是一个??
我认为,您所指的方法来自config/environments/production.rb
中的这一行:
# Use a different logger for distributed setups
# config.logger = SyslogLogger.new
本例中的方法不是config.logger
,而是config.logger=
,在Ruby-land中被称为"setter"方法。没有等号的那个被称为"getter"。该方法为Rails中的生产环境设置了一个备用记录器,然后可以通过在控制台或应用程序本身中使用Rails.logger
来访问它。
如果您想要输出一些东西到日志中,这很有用,因为您可以简单地调用这段代码:
Rails.logger.info("DEBUG INFO GOES HERE")
6。Config.paths.log.first是…??在控制台,我可以看到"MyApp::Application.configure.config.paths.log"。但不知道这是什么意思,也不知道如何从中提取信息!?
在Rails应用程序中,您可以修改某些目录的位置。所以,这个config.paths
方法是一种跟踪这些目录映射到哪里的方法。在我的整个Rails生活中,我从来没有使用或修改过这个变量,它可能意味着两种情况之一:
- Rails程序员不常用,或者;
- 我的生活并不多变。
随你怎么解释。我的主要观点是,你可能也永远不会使用它。
我希望这些能帮助你更多地了解Rails !
1可怕的骰子笑话
-
MyApp
是一个模块,它是一个命名空间,包括你要启动的应用程序,见下一行 -
MyApp::Application
是一个类,当运行Rails应用程序时,你正在运行它的实例 -
MyApp::Application.configure
是一个方法。它将所有指令传递给类。看到裁判。 -
config
是一个继承属于Rails::Application::Configuration
的方法或实例变量(当设置时)。看到裁判。
你可以看到它在控制台做:MyApp::Application.config
-
config.logger
在您定义它之前不存在,所以它是一个Logger实例。看到裁判。 -
config.paths.log
是Rails::Paths::Path
可以在控制台中使用:MyApp::Application.config.paths.log