相关疑难解决方法(0)

从密钥/对值文件中设置环境变量

TL; DR:如何将一组键/值对从文本文件导出到shell环境中?


为了记录,下面是问题的原始版本,带有示例.

我正在用bash编写一个脚本,用于解析某个文件夹中包含3个变量的文件,这是其中之一:

MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"
Run Code Online (Sandbox Code Playgroud)

该文件存储在./conf/prac1中

我的脚本minientrega.sh然后使用以下代码解析文件:

cat ./conf/$1 | while read line; do
    export $line
done
Run Code Online (Sandbox Code Playgroud)

但是当我minientrega.sh prac1在命令行中执行时,它不会设置环境变量

我也试过使用,source ./conf/$1但同样的问题仍然适用

也许有其他方法可以做到这一点,我只需要使用我传递的文件的环境变量作为我的脚本的参数.

variables bash environment-variables

425
推荐指数
28
解决办法
31万
查看次数

如何使用秘密yaml配置文件部署heroku应用程序而不提交文件?

在其他rails项目中,我有一个本地database.yml,在源代码库中只提交database.sample文件.在部署时,会使用capistrano脚本将database.yml的共享版本符号链接到所有版本.

当部署到heroku时,使用git并且它们似乎完全覆盖database.yml并在内部执行某些操作.

这对于database.yml来说一切都很好,但是如果我在config/s3.yml中有s3配置怎么办呢.我将我的项目放在github上,所以我不想提交s3.yml,每个人都可以看到我的凭据.它宁可提交一个示例s3.sample,人们将使用自己的设置覆盖它们,并在我的工作目录中保留一个本地s3.yml文件.

处理这个问题的最佳方法是什么?

deployment yaml config heroku

21
推荐指数
4
解决办法
2万
查看次数

Rails Production - 如何设置密钥基础?

所以我试图让我的rails应用程序部署在生产模式,但我得到错误:缺少secret_tokensecret_key_base'生产'环境,设置这些值config/secrets.yml

我的secrets.yml文件是预期的:

development:
  secret_key_base: xxxxxxx

test:
  secret_key_base: xxxxxxx

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

但即使在google和研究之后,我也不知道如何处理生产密钥库.大多数信息假设我有一定的背景知识,但现实是我是一个菜鸟.

任何人都可以向我解释如何设置我的密钥并使其在生产模式下工作?

deployment ruby-on-rails production-environment secret-key

19
推荐指数
5
解决办法
3万
查看次数

rails secret_key_base未在生产中被识别

所以我正在尝试在生产中部署我的rails应用程序.当我进入页面时,我收到500错误.当我转到我的错误日志时,我收到以下错误:

Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) 
Run Code Online (Sandbox Code Playgroud)

我正在运行Rails 4.1,我的config/secrets.yml看起来像这样:

    development:
      secret_key_base: <development key>        
    test:
      secret_key_base: <test key>

    # Do not keep production secrets in the repository,
    # instead read values from the environment.
    production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

我运行rake secret获取密钥并将导出放入我的bash_profile并获取它.我运行了rake资产:预编译成功.然而,我仍然一直在犯这个错误.有任何想法吗?

更新:我试图更新提供的错误消息,以提供更好的信息....并且消息没有更新.然后我尝试将密钥直接添加到yml文件,而不是使用环境变量,仍然没有骰子.我在hostmonster上运行,所以我无法重新启动服务器.....但有些东西告诉我需要做什么...

更新2:彻夜难眠后,这个问题似乎不再是问题.它一定是某种缓存.现在我的问题是它试图使用我几天前为我的数据库更改的旧配置.如果我弄清楚如何使缓存无效,我将在此处发布并将其标记为答案.如果其他人知道该怎么做,请告诉我,我会将其标记为答案.我使用HostMonster作为我的托管,并按照他们在他们的网站上的步骤来托管我的rails应用程序.

ruby rake ruby-on-rails

8
推荐指数
2
解决办法
1万
查看次数

如何使用Ruby on Rails 4.1.0beta1管理密钥和heroku?

随着secrets.yml文件的发布,我删除了对Figaro的依赖并将我的所有密钥移到secrets.yml并将该文件添加到.gitignore.

但是当我试图推送到Heroku时,Heroku表示他们需要在我的仓库中使用该文件来部署网站.这是有道理的,但如果我可以避免它,我不希望我的密钥在git中.

使用Figaro,我会运行一个rake任务,将密钥部署到heroku作为env变量,并将application.yml保存在.gitignore中.显然,我不能再这样做了.那我该怎么处理呢?

ruby-on-rails heroku

7
推荐指数
3
解决办法
8975
查看次数

在Rails中获取"从应用程序收到的不完整响应"

有人可以帮忙吗?我的堆栈是ubuntu-server 14.04,其中包含nginx/passenger和ruby 2.2.2.我无法让我的项目在生产中工作.一切都在开发中运行良好.

secrets.yml

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  secret_token: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

服务器

server { 
    listen 80; 
    server_name logvs.local; 
    passenger_enabled on; 
    passenger_app_env development;
    root /var/www/logvs/public; 
}
Run Code Online (Sandbox Code Playgroud)

error.log中

App 2532 stderr: [ 2015-06-07 22:56:01.4724 2610/0x000000014d6b00(Worker 1) utils.rb:85 ]: *** Exception RuntimeError in Rack application object (Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`) (process 2610, thread 0x000000014d6b00(Worker 1)):
App 2532 stderr:    from /home/username/.rvm/gems/ruby-2.2.2/gems/railties-4.2.1/lib/rails/application.rb:534:in `validate_secret_key_config!'
App 2532 stderr:    from /home/username/.rvm/gems/ruby-2.2.2/gems/railties-4.2.1/lib/rails/application.rb:246:in `env_config'
App 2532 stderr:    from /home/username/.rvm/gems/ruby-2.2.2/gems/railties-4.2.1/lib/rails/engine.rb:514:in `call' …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails passenger nginx

6
推荐指数
1
解决办法
1万
查看次数

缺少'secret_token`和`secret_key_base`用于'生产'环境

我看到了这个解决方案的所有答案,但没有为我工作.

1 - 我的配置部署与DigitalOcean(Capistrano 3,Nginx和Puma)的本教程相同,部署成功,我的网页出错:

发生了未处理的低级错误.应用程序日志可能包含详细信息

在日志中:

机架应用程序错误:#<RuntimeError:缺少secret_tokensecret_key_base'生产'环境,请在config/secrets.yml>中设置这些值

2 - 在我的Droplet或VPN中,我使用rake secret文件中的key()创建了变量./bashrc

export SECRET_KEY_BASE=XXXXXX
Run Code Online (Sandbox Code Playgroud)

文件 /config/secrets.yml是默认的

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

有了这个env变量,我检查了比这工作(echo $SECRET_KEY_BASEprintenv | grep SECRET_KEY_BASE)

3 - 重新启动Puma和Nginx并且此错误未解决后,我不知道检查或调试此错误的最佳方法是什么.

是否本教程不使用此解决方案的工作?

deployment capistrano ruby-on-rails nginx environment-variables

5
推荐指数
1
解决办法
3411
查看次数

Rails - 禁用api的secrets.yml

secrets.yml即使我将Rails作为JSON API运行,也似乎没有用于检查的配置选项

Puma发现了这个错误:

缺少secret_tokensecret_key_base'生产'环境,在config/secrets.yml(RuntimeError)中设置这些值

任何线索该怎么办?我想我可以生成一个假人secret_key_base并继续前进

ruby ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
402
查看次数

让Puma Postgres服务器在开发中工作以与Heroku合作,还是回到Sqlite有意义?

我使用puma而不是rails s工作一段时间,但随后在开发和更改代码和刷新时,刷新不起作用,延迟了很长时间.我以为它已经崩溃了什么,所以我杀死了puma服务器,但随后它说'优雅地关闭'几分钟,所以我杀死了终端窗口.然后,在我尝试使用puma它的新窗口中说主机已被占用,因此该过程仍在运行.无法找到它的位置,我重新启动了我的电脑.重启后,我现在得到错误,An unhandled lowlevel error occured. The application logs may have details.或者PG::ConnectionBad fe_sendauth: no password supplied取决于我是否运行pumaRAILS_ENV=development puma.

这些反应似乎都没有意义,而且这个错误我看到其他人都有rake db:migrate.所以我尝试迁移数据库并得到了同样的错误PG::ConnectionBad: fe_sendauth: no password supplied

在尝试运行服务器时的日志中:Rack app error: #<RuntimeError: Missingsecret_key_base for 'production' environment, set this value inconfig/secrets.yml>

现在这对我来说是最不合理的,因为为什么puma默认运行生产环境并需要特殊命令才能在开发中运行?

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

依赖于Heroku来传递secret_key_base是我的假设,所以它不适用于开发.但后来甚至RAILS_ENV=development puma抛出

PG::ConnectionBad
fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

一条似乎对我没有帮助的痕迹:

activerecord (4.1.7) lib/active_record/connection_adapters/postgresql_adapter.rb:888:in `initialize'
activerecord (4.1.7) …
Run Code Online (Sandbox Code Playgroud)

postgresql ruby-on-rails heroku puma ruby-on-rails-4

4
推荐指数
1
解决办法
4341
查看次数

缺少'production'环境的`secret_key_base`,在`config/secrets.yml`中设置此值

当我导航到我的Rails生产站点时,我得到:

*** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 29032, thread 0x9b81a60(Worker 1)):
Run Code Online (Sandbox Code Playgroud)

我看到这个错误的许多解决方案是导出环境变量 export SECRET_KEY_BASE='a long string generated by running rake secret

然而,这对我不起作用(我得到同样的错误).我必须包含config/environments/production.rb: config.secret_key_base = "a long string generated by running rake secret"解决此错误.

我的问题是,这是正确的方法,因为实践是不提交密钥?有没有办法让Rails从环境变量中读取?

我正在使用Ubuntu 14.04.1,Apache2,Phusion Passenger堆栈.

passenger ruby-on-rails-4

2
推荐指数
1
解决办法
6393
查看次数