未初始化的常量AssetSync

我使用了gem asset_sync和aws来预编译我的资产。 耙资产:预编译工作正常。 在将我的应用推送到heroku后,

heroku run rake db:migrate

我收到以下错误

“未初始化的常量AssetSync”

初始化/ asset_sync.rb

AssetSync.configure do |config|
  config.fog_provider = 'AWS'
  config.aws_access_key_id = "..."
  config.aws_secret_access_key = "..."
  config.fog_directory = Rails.env + "-..."
  config.fog_region = 'eu-west-1'
end

配置/ production.rb

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"
config.assets.enabled = true 

在运行运行rake资产之后:第一次预编译时,我的所有应用程序/资产/图像都被移至公共/资产。 我已经从github中删除了它们,并将公共/资产/ *添加到.gitignore。 这可能是问题吗?

编辑:当运行git push heroku master时,它看起来像是预编译的

   Preparing app for Rails asset pipeline
   Running: rake assets:precompile
   AssetSync: using /tmp/build_2ltvklj0gaxjp/config/initializers/asset_sync.rb
   AssetSync: using /tmp/build_2ltvklj0gaxjp/config/initializers/asset_sync.rb
   AssetSync: Syncing.
   Using: Directory Search of /tmp/build_2ltvklj0gaxjp/public/assets
   Uploading: assets/application-7e17d9f0ed9cb7ea50b750e2bfc7e28c.css.gz
   Uploading: assets/application-7e17d9f0ed9cb7ea50b750e2bfc7e28c.css
   AssetSync: Done.
   Asset precompilation completed (58.04s)

您的初始值设定程序假定AssetSync总是被定义的,但是如果您的Gemfile如下所示,情况并非如此:

group :assets do
  gem 'asset_sync'
end

asset_sync文档建议将初始化程序包装在:

if defined?(AssetSync)
...
end

这是因为Heroku在没有宝石assets组的情况下运行production 。 当你运行push时,Heroku会预编译你的资产 - 并且如果启用了asset_sync ,那么它会在那时更新S3 - 所以当你的应用程序稍后启动时,它不再需要那些宝石。 因此,您的asset_sync初始值设定项需要处理gem未加载的情况。

链接地址: http://www.djcxy.com/p/79991.html

上一篇: Uninitialized constant AssetSync

下一篇: Heroku does NOT compile files under assets pipelines in Rails 4