Ruby on rails 什么';rake资产:precompile和RAILS_ENV=生产rake资产:precompile之间的区别是什么?
这两个任务之间有什么区别,为什么我需要在cap部署时添加RAILS_ENV=productionRuby on rails 什么';rake资产:precompile和RAILS_ENV=生产rake资产:precompile之间的区别是什么?,ruby-on-rails,assets,Ruby On Rails,Assets,这两个任务之间有什么区别,为什么我需要在cap部署时添加RAILS_ENV=production 谢谢 第一个将在本地dev box(开发环境)上预编译您的资产,另一个将在生产环境上预编译您的资产。您在配置文件中的设置很可能不同,因此无论您将RAILS\u ENV设置为什么,它都将脱离环境配置中的配置。您需要指定RAILS\u ENV=production环境变量,以便config/environments/production.rb配置文件在预编译资源时使用。它通常包含资产管道的生产配置: c
谢谢 第一个将在本地dev box(开发环境)上预编译您的资产,另一个将在生产环境上预编译您的资产。您在配置文件中的设置很可能不同,因此无论您将
RAILS\u ENV
设置为什么,它都将脱离环境配置中的配置。您需要指定RAILS\u ENV=production
环境变量,以便config/environments/production.rb
配置文件在预编译资源时使用。它通常包含资产管道的生产配置:
config.assets.js_compressor = :uglifier
config.assets.digest = true
如果省略
RAILS\u ENV=production
,则将使用development
配置(config/environments/development.rb
)
--
生产与本地的对比
您还需要考虑的是,如果您正在预编译<代码>产品<代码>环境,它基本上编译和配置该环境的文件
简单地说,这意味着如果您仅对生产有任何特殊条件/依赖项,那么使用RAILS\u ENV=production
将在本地设置中使用这些条件/依赖项。这就是为什么要在GEM文件中设置此设置的原因:
#Gemfile
group :production do
gem 'xxxx'
end
--
SHELL变量
您需要欣赏的另一件事是RAILS\u ENV
是一个。这意味着无论何时运行shell会话
(即loadcmd
),都可以设置这些变量以提供特定的功能
关于RAILS\u ENV
,这意味着您将能够告诉RAILS暂时以生产模式运行;与在development
、testing
或staging
模式下运行不同,基本上运行RAILS\u ENV=production rake assets:precompile on local或production,在public/assets中生成的文件应该相同吗?我可以在部署时同步它们吗?根据本地和服务器上安装的JavaScript运行时,它们可能差别不大。看看如何更好地进行本地资产预编译。@Andrey Chernih Rails指南缺少这样的内容。