Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 config/environments/*.rb文件和config/deploy/*.rb文件之间是否存在依赖关系?如果是,是否会影响Capistrano部署?_Ruby On Rails_Config_Capistrano3 - Fatal编程技术网

Ruby on rails config/environments/*.rb文件和config/deploy/*.rb文件之间是否存在依赖关系?如果是,是否会影响Capistrano部署?

Ruby on rails config/environments/*.rb文件和config/deploy/*.rb文件之间是否存在依赖关系?如果是,是否会影响Capistrano部署?,ruby-on-rails,config,capistrano3,Ruby On Rails,Config,Capistrano3,我试图了解不同的配置文件在幕后是如何协同工作的。特别是与Environment/.rb和deploy/.rb文件相关的配置。我知道config/environments目录是由rails创建的,config/deploy是由capistrano创建的。我的理解是,这两组配置有不同的用途。我只是想澄清一下,在使用rails运行应用程序或部署应用程序时,这两组配置是否会相互影响。TIA.环境/**.rb包含应用程序在不同环境(测试、开发、生产)中运行时的设置deploy/**.rb包含部署时应用程序

我试图了解不同的配置文件在幕后是如何协同工作的。特别是与Environment/.rb和deploy/.rb文件相关的配置。我知道config/environments目录是由rails创建的,config/deploy是由capistrano创建的。我的理解是,这两组配置有不同的用途。我只是想澄清一下,在使用rails运行应用程序或部署应用程序时,这两组配置是否会相互影响。TIA.

环境/**.rb
包含应用程序在不同环境(测试、开发、生产)中运行时的设置
deploy/**.rb
包含部署时应用程序的设置(暂存、生产)。

environment/**.rb
包含在不同环境(测试、开发、生产)中运行时应用程序的设置
deploy/**.rb
包含应用程序在部署时的设置(暂存、生产)。

它们没有直接关系,但会相互作用

如前所述,
config/environment/*.rb
包含特定于环境的设置。这是在Rails引导时进行评估的

config/deploy.rb
包含常规Capistrano部署配置。通常,为某些部署情况创建一组特定的配置非常有用,在这种情况下,您可以在
config/deploy/*.rb
中定义文件。最常见的情况是针对不同的环境进行不同的部署。这是两者可以互动的地方

例如,如果暂存环境连接到一组服务器,生产环境连接到另一组服务器,则可能会定义
config/deploy/staging.rb
config/deploy/production.rb
。它们将定义它们要去的服务器,并通过运行
cap stagename deploy
触发,其中
stagename
config/deploy/*.rb中的文件名(不带文件扩展名)

config/deploy/*.rb
文件中,您还可以定义在部署期间运行的rails命令所使用的rails环境,例如资产编译和绑定器安装。通过添加行
set:rails_env,'staging'
,其中
staging
config/environments/*.rb中的文件名(同样,没有文件扩展名)

但是,在上面的示例中,两个文件之间存在1:1的相关性,但并不总是需要这样。例如,如果通过环境变量注入所有特定于环境的配置,则在
config/deploy/
中可能有暂存和生产文件,但在
config/environments/
中只有一个生产文件。在本例中,您将让暂存Rails作为生产运行。在本例中,可能需要在
config/deploy.rb
中定义
set:rails\u env,'production'


另外一个警告是,如果您使用
capistrano-rails
gem,并且没有在部署配置中明确定义
rails\u-env
设置,(部署时调用的文件名,例如
cap-stagename-deploy
)。所以你可能会被误导,认为你需要有一个1:1的映射。但是,如果不需要另一个配置文件,只需显式定义
set:rails_env,'stagename'

它们并不直接相关,而是相互作用的

如前所述,
config/environment/*.rb
包含特定于环境的设置。这是在Rails引导时进行评估的

config/deploy.rb
包含常规Capistrano部署配置。通常,为某些部署情况创建一组特定的配置非常有用,在这种情况下,您可以在
config/deploy/*.rb
中定义文件。最常见的情况是针对不同的环境进行不同的部署。这是两者可以互动的地方

例如,如果暂存环境连接到一组服务器,生产环境连接到另一组服务器,则可能会定义
config/deploy/staging.rb
config/deploy/production.rb
。它们将定义它们要去的服务器,并通过运行
cap stagename deploy
触发,其中
stagename
config/deploy/*.rb中的文件名(不带文件扩展名)

config/deploy/*.rb
文件中,您还可以定义在部署期间运行的rails命令所使用的rails环境,例如资产编译和绑定器安装。通过添加行
set:rails_env,'staging'
,其中
staging
config/environments/*.rb中的文件名(同样,没有文件扩展名)

但是,在上面的示例中,两个文件之间存在1:1的相关性,但并不总是需要这样。例如,如果通过环境变量注入所有特定于环境的配置,则在
config/deploy/
中可能有暂存和生产文件,但在
config/environments/
中只有一个生产文件。在本例中,您将让暂存Rails作为生产运行。在本例中,可能需要在
config/deploy.rb
中定义
set:rails\u env,'production'

另外一个警告是,如果您使用
capistrano-rails
gem,并且没有在部署配置中明确定义
rails\u-env
设置,(部署时调用的文件名,例如
cap-stagename-deploy
)。所以你可能会被误导,认为你需要有一个1:1的映射