RoR,Fog:Fog 入门
RoR, Fog: Getting Started with 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
?除了安装 gem?
,这就是我开始使用 fog 所需要做的一切吗?
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
)
没问题,入门往往是最难的部分。
答案是,这取决于。我实际上冒昧地说最好将它放在基于环境的初始化程序中,即 config/init/development 或 config/init/production 等。相关地,您可能不想每次都生成一个新目录启动您的应用程序(我相信帐户级别限制为 100 个)。因此,您可能想要为该创建的每个环境设置一个键,或者只是在初始化程序之外的某个地方创建目录(并且在初始化程序中,您可以假设它存在)。
如果您想直接使用该目录,您仍然需要创建一个引用,但是您可以创建一个本地引用而无需使用 #new 进行任何 api 调用,如下所示:
directory = connection.directories.new(:key => ...)
至于 asset_sync,它需要这些密钥和对目录密钥的引用,您可能希望通过 ENV 变量提供这些密钥(以避免将您的凭据检查到版本控制中)。您可以在此处找到有关哪些键以及如何设置它们的详细信息:https://github.com/rumblelabs/asset_sync#built-in-initializer-environment-variables(自述文件还描述了如何通过初始化程序进行设置,但这可能不是最好的计划)。
希望对您有所帮助!
我刚刚安装了 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
?除了安装 gem?
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
)
没问题,入门往往是最难的部分。
答案是,这取决于。我实际上冒昧地说最好将它放在基于环境的初始化程序中,即 config/init/development 或 config/init/production 等。相关地,您可能不想每次都生成一个新目录启动您的应用程序(我相信帐户级别限制为 100 个)。因此,您可能想要为该创建的每个环境设置一个键,或者只是在初始化程序之外的某个地方创建目录(并且在初始化程序中,您可以假设它存在)。
如果您想直接使用该目录,您仍然需要创建一个引用,但是您可以创建一个本地引用而无需使用 #new 进行任何 api 调用,如下所示:
directory = connection.directories.new(:key => ...)
至于 asset_sync,它需要这些密钥和对目录密钥的引用,您可能希望通过 ENV 变量提供这些密钥(以避免将您的凭据检查到版本控制中)。您可以在此处找到有关哪些键以及如何设置它们的详细信息:https://github.com/rumblelabs/asset_sync#built-in-initializer-environment-variables(自述文件还描述了如何通过初始化程序进行设置,但这可能不是最好的计划)。
希望对您有所帮助!