2013-03-17 48 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