Ruby on rails Rails]在开发环境中初始化Fog
我将rails应用程序部署到Heroku上,并将服务器上的aws访问密钥设置为环境变量。然而,为了在开发环境中测试我的应用程序,我需要在本地机器上的某个地方初始化它们。所以我决定做以下几点 /config/initailizers/init_aws_locally.rbRuby on rails Rails]在开发环境中初始化Fog,ruby-on-rails,heroku,carrierwave,fog,Ruby On Rails,Heroku,Carrierwave,Fog,我将rails应用程序部署到Heroku上,并将服务器上的aws访问密钥设置为环境变量。然而,为了在开发环境中测试我的应用程序,我需要在本地机器上的某个地方初始化它们。所以我决定做以下几点 /config/initailizers/init_aws_locally.rb ENV['AWS_ACCESS_KEY_ID'] = 'my key' ENV['AWS_SECRET_ACCESS_KEY'] = 'my secret key' 此文件添加到.gitignore 但是,当我在开发环境中上载
ENV['AWS_ACCESS_KEY_ID'] = 'my key'
ENV['AWS_SECRET_ACCESS_KEY'] = 'my secret key'
此文件添加到.gitignore
但是,当我在开发环境中上载时,我收到以下错误消息:
缺少必需的参数:aws\u访问\u密钥\u id、aws\u机密\u访问\u密钥
我想我忽略了在开发环境中包含aws密钥的一个简单步骤。但我不确定为什么在我已经初始化密钥时会出现错误
作为参考,我使用的是carrierwave、S3和Fog
config/initializers/fog.rb
多谢各位。我感谢你的帮助 我会避免在代码中添加任何凭据。这是一个非常糟糕的想法,而赫罗库的想法是正确的。所以我要做的就是使用RVM并在我的项目文件夹中放置一个文件.rvmrc。我把.rvmrc也放进去了 然后编辑.rvmrc以使 导出AWS\u访问密钥\u ID=“BLAH” 诸如此类。每当我“cd”到这个目录,RVM就会为我的项目设置我的环境。如果你不使用RVM,还有其他的选择 铁轨
它将设置所有的环境变量,您将它们放入.rvmrc脚本中。不需要初始值设定项或仅开发yaml配置文件,这些文件不受源代码控制。根据我的经验,这是最简单的解决办法 我会避免在代码中添加任何凭据。这是一个非常糟糕的想法,而赫罗库的想法是正确的。所以我要做的就是使用RVM并在我的项目文件夹中放置一个文件.rvmrc。我把.rvmrc也放进去了 然后编辑.rvmrc以使 导出AWS\u访问密钥\u ID=“BLAH” 诸如此类。每当我“cd”到这个目录,RVM就会为我的项目设置我的环境。如果你不使用RVM,还有其他的选择 铁轨
它将设置所有的环境变量,您将它们放入.rvmrc脚本中。不需要初始值设定项或仅开发yaml配置文件,这些文件不受源代码控制。根据我的经验,这是最简单的解决办法 您的初始值设定项将按字母顺序运行。见: 如果初始值设定项中存在任何排序依赖项,则可以 通过命名控制加载顺序。例如,01_critical.rb将是 在02_normal.rb之前加载
您遇到的问题是fog.rb初始值设定项在init_aws_local.rb one之前运行(因为f在i之前)。因此,当您设置fog凭据时,尚未定义ENV['AWS\u ACCESS\u KEY\u ID'。您的初始值设定项将按字母顺序运行。见: 如果初始值设定项中存在任何排序依赖项,则可以 通过命名控制加载顺序。例如,01_critical.rb将是 在02_normal.rb之前加载
您遇到的问题是fog.rb初始值设定项在init_aws_local.rb one之前运行(因为f在i之前)。因此,在设置fog凭据时,尚未定义ENV['AWS\u ACCESS\u KEY\u ID']。我转到shell并键入: $echo$AWS\u密码\u访问\u密钥
结果是一片空白。事实证明,我最近移动到了一个新的虚拟机,并忘记将其添加到.bashrc文件中。为了以防万一,值得检查shell环境。一旦我将这两行代码添加到.bashrc中,一切都很愉快。我转到shell并键入: $echo$AWS\u密码\u访问\u密钥
结果是一片空白。事实证明,我最近移动到了一个新的虚拟机,并忘记将其添加到.bashrc文件中。为了以防万一,值得检查shell环境。一旦我将这两行代码添加到我的.bashrc中,一切都很愉快。上传到您的开发中?所以你不是在本地机器上开发?什么是你们的开发操作系统?在开发环境中上传,我的意思是发布一篇带有附件的文章。上传到你们的开发环境?所以你不是在本地机器上开发?你们的开发操作系统是什么?在开发环境中上传,我的意思是发布一篇带有附件的文章。太好了。这似乎是一个很好的解决办法。但我仍然很好奇为什么我的方法不起作用。你有这个想法吗?太好了。这似乎是一个很好的解决办法。但我仍然很好奇为什么我的方法不起作用。你对此有什么想法吗?这是我的错误fog/core/service的解决方案。rb:234:in'validate\u options':缺少必需的参数:aws\u access\u key\id,aws\u secret\u access\u key(ArgumentError)这是我的错误fog/core/service的解决方案。rb:234:in'validate\u options':缺少必需的参数:aws\u access\u key\id,aws\u secret\u access\u key\u key\u key(错误)
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'], # required
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], # required
:region => 'us-east-1', # optional, defaults to 'us-east-1'
}
config.fog_directory = 'd' # required
config.fog_public = true # optional, defaults to true
end