Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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_Ruby_Ruby On Rails 4_Asset Sync - Fatal编程技术网

Ruby on rails Rails资产管道将目录展平

Ruby on rails Rails资产管道将目录展平,ruby-on-rails,ruby,ruby-on-rails-4,asset-sync,Ruby On Rails,Ruby,Ruby On Rails 4,Asset Sync,我一直在使用,将我们的静态资产移动到AmazonS3,我注意到当我预编译我的资产时(使用foreman run rake assets:precompile),基本目录会变平。它们来自: /app /assets/ /images image.png image2.png /subdir image3.png /javascripts script.js /stylesheets style.

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

/app
  /assets/
    /images
      image.png
      image2.png
      /subdir
        image3.png
    /javascripts
      script.js
    /stylesheets
      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']
“我的环境”具有以下变量:


您是否为正在创建的应用程序正确配置了资产同步

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
根据应用程序的类型,您需要配置前缀和公共路径。有关更多信息,请查看Sinatra/Rack support部分。希望让您走上正确的道路

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
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