Rails3:如何设置特定于项目的bash环境变量?

时间:2012-01-18 18:56:19

标签: ruby-on-rails bash

我的应用程序使用多个环境变量(在本地开发机器上的〜/ .bashrc中,以及远程heroku应用程序上的heroku配置变量)。

由于本地计算机上的所有ENV变量都在同一个文件中,因此我必须小心地命名它们以避免不同应用程序之间的冲突。

如何在本地计算机上设置特定于我在本地运行的特定应用程序的环境变量?

例如,要在本地运行app_one:

cd app_one  
run_something (that loads the env vars then runs rails server)

3 个答案:

答案 0 :(得分:9)

如果您使用的是RVM,那么您可以将特定于应用的环境变量放入应用的.rvmrc个文件中。

例如,假设您有两个应用程序pancakeseggs,设置如下:

~/src/pancakes/
~/src/eggs/

和两个.rvmrc文件如下:

# ~/src/pancakes/.rvmrc
export APP_NAME=pancakes

# ~/src/eggs/.rvmrc
export APP_NAME=eggs

然后:

$ cd ~/src/pancakes
$ echo $APP_NAME
pancakes
$ cd ~/src/eggs
$ echo $APP_NAME
eggs

此方法的另一个优点是可以将所有特定于应用程序的设置保留在应用程序中,并且可以轻松地将特定于应用程序的环境变量保持在版本控制之下。您还可以将一个小解析器连接到您的发布过程,以从.rvmrc文件中提取必要的设置,并将它们设置在Heroku上。

答案 1 :(得分:2)

1)您可以创建一个包装器shell脚本来设置env vars,然后调用服务器(例如,script/rails s

2)您可以在命令行上定义它们: RAILS_ENV=production MYTHICAL_VAR=someserver:8080 script/rails s

3)您可以在应用的初始化程序脚本中设置这些变量

答案 2 :(得分:2)

保存此脚本,然后执行./somescript.sh。

#!/bin/bash
export FOO=bar
exec some_other_command