2013-03-17 43 views
0

有沒有人有任何在Sinatra應用程序中向AWS S3提供資產的經驗。我已經安裝了寶石向Sinatra的AWS s3提供靜態資產

asset_sync 

按照這些指令https://github.com/ejholmes/asset-sync-sinatra

當我運行

rake assets:precompile 

我在控制檯

cannot load such file -- asset_sync 

收到此錯誤信息這是我的設置

的Gemfile

source :rubygems 
gem 'sinatra' 
gem 'pony' 
gem 'sinatra-flash' 
gem 'heroku' 
gem 'activesupport', require: 'active_support' 
gem 'asset_sync', git: 'git://github.com/ejholmes/asset_sync.git', branch: 'sinatra' 

config.rb

module MyConfig 

def config 
environment = ENV["RACK_ENV"] || "development" 
YAML.load_file("./config/config.yml")[environment] 
end 
end 

config.yml

development: 
aws_access_key: = 'myaccesskey' 
aws_secret_key: = 'mysecretkey' 
fog_directory: = 'applecatering' 

Rake文件

require 'active_support/core_ext' 
require 'asset_sync' 
require './config/config.rb' 
include MyConfig 

AssetSync.configure do |con| 
con.fog_provider = 'AWS' 
con.fog_region = 'eu-west-1' 
con.fog_directory = config['fog_directory'] 
con.aws_access_key_id = config['aws_access_key'] 
con.aws_secret_access_key = config['aws_secret_key'] 
con.prefix = "assets" 
con.public_path = Pathname("./public") 
end 

namespace :assets do 
desc "Precompile assets" 
task :precompile do 
AssetSync.sync 
end 
end 

第一次嘗試這樣,任何人都可以看到我在做什麼錯了,我即時發佈或不理解這個?

回答

2

我不認爲你的Rakefile包括Gemfile

嘗試添加以下內容到Rakefile的頂部,

require 'bundler/setup' 
Bundler.require(:default) 

並嘗試運行bundle exec rake assets:precompile

編輯:

此外,也許從Rakefile掉落require 'asset_sync'Bundler.require(:default)應該requireGemfile

+0

內容啊謝謝你,現在看來,我有一個問題,我的桶的名字,但我認爲這與他們的規則 – Richlewis 2013-03-17 20:32:45

+0

實際錯誤消息霧遵守:指定的S3存儲名稱(=「applecatering ')不是有效的DNS名稱,這會對性能產生負面影響。 – Richlewis 2013-03-17 20:33:32

+0

您的存儲桶名稱似乎設置爲'='applecatering''。嘗試在定義桶ENV設置的位置擺脫'app'catering'周圍的'='和引號。 – Sam 2013-03-17 20:38:12