Rails资产管道展平目录

时间:2015-12-01 22:49:43

标签: ruby-on-rails ruby ruby-on-rails-4 asset-sync

我一直在使用asset_sync将静态资产移动到Amazon S3,我注意到当我预编译资产时(使用foreman run rake assets:precompile),基本目录会变平。他们来自:

/app
  /assets/
    /images
      image.png
      image2.png
      /subdir
        image3.png
    /javascripts
      script.js
    /stylesheets
      style.css

要:

/public
  /assets/
    image.png
    image2.png
    /subdir
      image3.png
    script.js
    style.css

它保留所有子目录,但基础目录由于某种原因被删除。

是否可以禁用此功能?我想将我的S3资产整理到目录中。我可以通过添加其他目录来解决这个问题,以便结构如下。

/app
  /assets/
    /images
      /images
        image.png
        image2.png
        /subdir
          image3.png
    /javascripts
      /javascripts
        script.js
    /stylesheets
      /stylesheets
        style.css

但这似乎是一个肮脏的解决方案。

我正在配置我的资产以进行预编译:

Rails.application.config.assets.precompile = []
Rails.application.config.assets.precompile += ['application.js']
Rails.application.config.assets.precompile += Loader.js_files
Rails.application.config.assets.precompile += ['*.css', '*.png', '*.svg', '*.jpg']

我的环境有以下变量“:

ASSET_SYNC_GZIP_COMPRESSION=true
ASSET_SYNC_MANIFEST=true
ASSET_SYNC_EXISTING_REMOTE_FILES=keep
AWS_ACCESS_KEY_ID=xxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxx
FOG_DIRECTORY=aws-example
FOG_PREFIX=/assets/
FOG_PROVIDER=AWS
FOG_REGION=us-west-1

1 个答案:

答案 0 :(得分:0)

您是否为正在创建的应用程序正确配置了asset_sync?

AssetSync.configure do |config|
  config.fog_provider = 'AWS'
  config.fog_directory = ENV['FOG_DIRECTORY']
  config.aws_access_key_id = ENV['AWS_ACCESS_KEY_ID']
  config.aws_secret_access_key = ENV['AWS_SECRET_ACCESS_KEY']
  config.prefix = 'assets'
  config.public_path = Pathname('./public')
end

根据您需要配置前缀和public_path的应用程序类型。有关更多信息,请查看Sinatra / Rack支持部分https://github.com/AssetSync/asset_sync。希望让你走上正确的道路。