上限生产部署的Rails问题

时间:2015-12-11 13:11:29

标签: ruby-on-rails amazon-ec2 capistrano

我的堆栈是AWS EC2上的Puma + Nginx + PostgreSQL。我正在使用Capistrano 3.4来部署Rails 4.2.4应用程序。我一直在黑暗中试图解决这个问题已经有一段时间了,所以我想看看我是否能得到一些帮助来解决这个问题。这在概念上并不困难,我只是不知道为什么我尝试过的东西不起作用。

以下是Capistrano的输出内容:

rake assets:precompile

请注意,在第一行中有一些尝试在Bash命令中设置所需的参数,但显然无法在set :default_env, { rvm_bin_path: '~/.rvm/bin', 'aws_access_key_id' => '<MY_AWS_ACCESS_KEY_ID>', 'aws_secret_access_key' => '<MY_AWS_SECRET_ACCESS_KEY>' } 中访问它们。所以我的问题是如何正确设置'required arguments'aws_access_key_id和aws_secret_access_key。

我尝试了什么:

1)在config / deploy.rb中设置它们(受this启发)

要做到这一点我用过:

aws_access_key_id: '<MY_AWS_ACCESS_KEY_ID>',
aws_secret_access_key: '<MY_AWS_SECRET_ACCESS_KEY>'

2)在我的EC2服务器上以shared / secrets.yml设置它们:(灵感来自this

set :linked_files, %w{config/database.yml config/application.yml secrets.yml}

我在config / deploy.rb中将这些链接为

CarrierWave.configure do |config|
    config.fog_credentials = {
      :provider              => 'AWS',
      #:aws_access_key_id     => ENV['AWS_ACCESS_KEY_ID'], # I still get the same error when I use these two lines instead
      #:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
      :aws_access_key_id     => Rails.application.secrets.aws_access_key_id,
      :aws_secret_access_key => Rails.application.secrets.aws_secret_access_key
    }
    config.fog_directory    = ENV['AWS_S3_BUCKET']
end

目前我正在尝试在config / initializers / carrierwave.rb中输入密钥:

aws_access_key_id: "<MY_AWS_ACCESS_KEY_ID>"
aws_secret_access_key: "<MY_AWS_SECRET_ACCESS_KEY>"

3)在config / application.yml中设置它们(受this启发)为

var url = "http://api.ean.com/ean-services/rs/hotel/v3/list?cid=xxx&apiKey=xxx&minorRev=30&currencyCode=AUD";
        $http.jsonp(url)
            .then(function(mycallback){
                $scope.md = mycallback;
                var mydata = mycallback.data; 
                console.log(mydata);            
        });

那么为什么这些方法都不起作用呢?我在设置环境变量方面不是很有经验,更不用说在远程服务器上了,但我看过线程/博客帖子,其中每个都可以工作。

感谢大家的帮助。随意提问或了解更多信息!

1 个答案:

答案 0 :(得分:1)

我可以看到您选择的几个问题,我将在下面列出相应的内容:

  1. 环境变量名称区分大小写,这意味着您要导出示例aws_access_key_id,但是您引用的{/ 1}}载波代码。

    详细了解https://github.com/xamarin/recipes/blob/master/ios/media/coreimage/adjust_contrast_and_brightness_of_an_image/color_controls_pro/ImageViewController.cs

  2. 您的capistrano正在尝试关联ENV['AWS_ACCESS_KEY_ID'],您实际需要的是secrets.yml,请尝试将该行更改为:

    config/secrets.yml

  3. 假设您已按照所提及的帖子中所述安装了assigning environment variables here,我假设(根据您提供的详细信息)该问题很可能与区分大小写有关(转到1)。< / p>

  4. 选一个然后再去吧!