Capistrano:如何设置全局环境变量?
我需要找到一种从 Capistrano 设置全局环境变量的方法。实际值是在运行时生成的,我无法在存储库中检查它并从那里加载。
该值必须作为 ENV['RAILS_ASSET_ID']
加载到一个初始值设定项中。
我怎样才能这样做呢?
I need to find a way to set global env variable from Capistrano. Actual value is generated on in runtime, I can not check it in the repo and load from there.
This value must be loaded as ENV['RAILS_ASSET_ID']
in one initializer.
How can I do so?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您不能使用
default_environment
capistrano 变量吗?cf github/capistrano
对于例如,我们可以在生产中将它用于 rbenv :
Can't you use the
default_environment
capistrano variable ?cf github/capistrano
For instance, we can use it for rbenv in production :
在初始化程序中指定它怎么样?
How about just specifying it in your initializer?
如果全局变量是指在 Capistrano 中生成并随后在 Rails 中使用的内容,那么是的,您将必须创建某种文件。 Ruby 变量在运行之间不会持续存在。可以设置环境变量,但仅适用于子进程。
在部署期间在服务器上转储文件的一种方法就像您在那里所拥有的那样,只是远程:
您可以稍后像您所做的那样拾取并读取该值。
If by global variable you mean something that is generated in Capistrano and later used in Rails then yes, you will have to create some sort of file. Ruby variables do not persist between runs. Environment variables can be set but only apply to sub-processes.
One way to dump a file on the server during your deployment is like what you have there, only remote:
You can later pick up and read that value as you've done.
作为解决方法,到目前为止我正在使用此方法:
并且它是在初始化程序中检索的:
但必须有更好的方法。有什么想法吗?
As a workaround, I'm using this method so far:
and it is retrieved in intializer :
But there must be a better way. Any ideas?