Ruby on rails 在Rails中,是否可以针对不同的环境使用不同的资产目录?
在执行资产预编译(Ruby on rails 在Rails中,是否可以针对不同的环境使用不同的资产目录?,ruby-on-rails,angularjs,ruby-on-rails-4,gulp,Ruby On Rails,Angularjs,Ruby On Rails 4,Gulp,在执行资产预编译(rake资产:Precompile)之前,我想将gulp任务应用于我的JavaScript文件,这些文件位于以下位置: app/assets/javascripts/my_angular/directives/*.js app/assets/javascripts/my_angular/controllers/*.js 因此,当我稍后运行rakeassets:precompile时,它将拾取已经由gulp文件处理的文件 但我的问题是,我不想简单地用它的gulp输出文件覆盖现有
rake资产:Precompile
)之前,我想将gulp
任务应用于我的JavaScript文件,这些文件位于以下位置:
app/assets/javascripts/my_angular/directives/*.js
app/assets/javascripts/my_angular/controllers/*.js
因此,当我稍后运行rakeassets:precompile
时,它将拾取已经由gulp文件处理的文件
但我的问题是,我不想简单地用它的gulp
输出文件覆盖现有的JS文件,因为我仍然需要原始的、未接触过的文件来进行舒适的开发
我想我需要两个文件夹:
1) 资产开发
2) 生产资源(自动生成的文件夹,带有gulp
output)
在Rails中,是否可以为不同的环境使用不同的资产目录?(开发、生产)。如果是-如何配置
也许还有别的办法解决我的问题?没有两个单独的目录。。。我愿意接受建议。您可以使用config.assets.prefix='/gulped assets'
。如果您在config/environments/production.rb
中这样做,它将应用于生产,而不是开发,让您仍然可以在dev中使用原始文件。您需要确保部署过程在资产编译之前运行Gulp,或者在本地运行Gulp,并将/gulped资产
包含在存储库中
您还可以访问资产管道,这样您只需要一个
/assets
目录。您可以通过指定文件扩展名和处理程序,然后将扩展名添加到所有需要以这种方式处理的文件中,就像使用.sass
、.erb
等所做的那样。要从Rails示例中抄袭,它如下所示:
module BangBang
class Template < ::Tilt::Template
def prepare
# Do any initialization here
end
# Adds a "!" to original template.
def evaluate(scope, locals, &block)
"#{data}!"
end
end
end
然后,扩展名中包含.bang
的任何文件都将有一个代码>附加到它。现在已经有很多不同任务的支持了,所以也许你可以避免狼吞虎咽而选择链轮专用管道。根据您的吞咽任务,您甚至可以通过这些任务释放并运行数据
,以构建混合管道
或者,您可以转到另一个方向,用仅限一口的管道更换链轮。有很多人都在这样做,我在这里写的任何东西都会很长,而且只会复制他们的作品,所以请查看gem,也许可以从另一个角度来阅读
# config/initializers/bang.rb
Sprockets.register_engine '.bang', BangBang::Template