Ruby on rails config/environments/*.rb文件和config/deploy/*.rb文件之间是否存在依赖关系?如果是,是否会影响Capistrano部署?
我试图了解不同的配置文件在幕后是如何协同工作的。特别是与Environment/.rb和deploy/.rb文件相关的配置。我知道config/environments目录是由rails创建的,config/deploy是由capistrano创建的。我的理解是,这两组配置有不同的用途。我只是想澄清一下,在使用rails运行应用程序或部署应用程序时,这两组配置是否会相互影响。TIA.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包含部署时应用程序
环境/**.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的映射