そのため、Amazon s3 から静的アセットをローカルで提供しようとしています。Heroku の場合、yml ファイルをロードしていましたが、Heroku がシンボリック リンクを受け入れないため、機能しません。
そのため、Herokuもこれらを使用しているため、ENV変数を使用するよう提案されました。アセットを AWS にプリコンパイルするレーキ タスクがあります。現在2つの問題
1) ENV 変数が読み取られません (フォグ ディレクトリを空白にすることはできません、Aws アクセス キーを空白にすることはできません、Aws シークレット アクセス キーを空白にすることはできません
2) rake タスクを実行すると、「定数 VALID_CHARACTER が既に初期化されています」というエラーも表示されます。
それでは、activesupport 定数が 2 回読み込まれているのでしょうか。
私のセットアップ
env.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
Gemfile
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 タスクが開始されますが、新しいコマンドの準備が整った端末に戻ります。
もう 1 つは、メーラーに Pony が必要なのですが、どうすればこれを回避できますか?