Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 在Rails中,是否可以针对不同的环境使用不同的资产目录?_Ruby On Rails_Angularjs_Ruby On Rails 4_Gulp - Fatal编程技术网

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