所以我试图在本地提供来自 Amazon s3 的静态资产,而对于 Heroku,我正在加载一个 yml 文件,但这不起作用,因为 Heroku 不接受符号链接。
所以我得到了使用 ENV 变量的建议,因为 Heroku 也使用这些变量。我有一个 rake 任务将资产预编译到 AWS。目前有两个问题
1) 我的 ENV 变量没有被读取。(雾目录不能为空,Aws 访问密钥不能为空,Aws 秘密访问密钥不能为空
2) 运行 rake 任务时,我还收到错误“已初始化常量 VALID_CHARACTER”
那么 activesupport 常量被加载了两次?
我的设置
环境.rb
ENV['aws_bucket'] = 'bucketname'
ENV['aws_access_key'] = 'myaccesskey'
ENV['aws_secret_key'] = 'mysecretkey'
耙文件
require 'bundler/setup'
Bundler.require(:default)
require './env' if File.exists?('env.rb')
AssetSync.configure do |con|
con.fog_provider = 'AWS'
con.fog_region = 'eu-west-1'
con.fog_directory = ENV['aws_bucket']
con.aws_access_key_id = ENV['aws_access_key']
con.aws_secret_access_key = ENV['aws_secret_key']
con.prefix = "assets"
con.public_path = Pathname("./public")
end
namespace :assets do
desc "Precompile assets"
task :precompile do
AssetSync.sync
end
宝石文件
source :rubygems
gem 'sinatra'
gem 'pony'
gem 'sinatra-flash'
gem 'heroku'
gem 'asset_sync', git: 'git://github.com/ejholmes/asset_sync.git', branch: 'sinatra'
更新
AssetSync 在它的 gemspec 中具有积极的支持,因此可以以任何方式包含在内。它似乎与小马 gemspec 的邮件 gem 中定义的常量冲突。
因此,删除 Pony gem 后,我可以在本地预编译资产,但是当我尝试为 heroku 编译时,什么也没有发生,它会启动 rake 任务,但随后会返回终端准备执行新命令。
另一件事是我的邮件需要 Pony,我该如何解决这个问题?