RoR,雾:雾入门

时间:2015-01-28 22:36:16

标签: ruby-on-rails ruby heroku fog

我刚安装了gem asset_sync,我正在尝试使用我的AWS账户进行设置。当我运行bundle exec rake assets:precompile时,我得到以下错误:

AssetSync::Config::Invalid: Fog provider can't be blank, Fog directory can't be blank

我理解我收到此错误的原因,即我没有将Fog提供程序或目录推送到heroku。我难以理解的是在哪里放下以下代码(取自Fog README)。在config/initializers/fog.rb?这是我需要做的就是开始使用雾,而不是安装宝石吗?

require 'rubygems'
require 'fog'

# create a connection
connection = Fog::Storage.new({
  :provider                 => 'AWS',
  :aws_access_key_id        => YOUR_AWS_ACCESS_KEY_ID,
  :aws_secret_access_key    => YOUR_AWS_SECRET_ACCESS_KEY
})

# First, a place to contain the glorious details
directory = connection.directories.create(
  :key    => "fog-demo-#{Time.now.to_i}", # globally unique name
  :public => true
)

1 个答案:

答案 0 :(得分:2)

不是问题,入门往往是最难的部分。

答案是,这取决于。我实际上冒昧地说,最好将它放在基于环境的初始化器中,即config / init / development或config / init / production等。相关地,你可能不希望每次都生成一个新目录启动你的应用程序(我相信帐户级别限制为100)。因此,您可能希望为该创建的每个环境设置一个密钥,或者只是在初始化程序之外的某个位置创建一个目录(在初始化程序中,您可以认为它存在)。

如果你想直接使用那个目录,你仍然需要创建一个引用,但你可以创建一个本地引用而不用#new进行任何api调用:

directory = connection.directories.new(:key => ...)

对于asset_sync,它需要这些键和对目录键的引用,您可能希望通过ENV vars提供该目录键(以避免将您的凭据检入版本控制)。您可以在此处找到有关哪些键及其设置方法的详细信息:https://github.com/rumblelabs/asset_sync#built-in-initializer-environment-variables(自述文件还介绍了如何通过初始化程序执行此操作,但这可能不是最佳方案)。

希望有所帮助!