Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:配置变量的存放位置_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails:配置变量的存放位置

Ruby on rails Rails:配置变量的存放位置,ruby-on-rails,Ruby On Rails,我的团队正在维护一个Rails应用程序。以前的开发人员决定将一些配置变量(如facebook应用程序id、twitter应用程序id)作为env变量。但这并不是万能的。如果我们有两个应用程序(测试和生产),我们只能使用一个硬编码配置(或手动更改)。将这些变量放入版本控制也是一种很好的做法 这样做对吗?如果没有,正确的方法是什么?我们在两个应用程序中使用以下解决方案 将配置变量存储在gem的yml文件中 应用程序通过初始化器配置为在生产和开发模式下使用不同的yml文件 在生产服务器上,包含yml文

我的团队正在维护一个Rails应用程序。以前的开发人员决定将一些配置变量(如facebook应用程序id、twitter应用程序id)作为env变量。但这并不是万能的。如果我们有两个应用程序(测试和生产),我们只能使用一个硬编码配置(或手动更改)。将这些变量放入版本控制也是一种很好的做法


这样做对吗?如果没有,正确的方法是什么?

我们在两个应用程序中使用以下解决方案

  • 将配置变量存储在gem的yml文件中

  • 应用程序通过初始化器配置为在生产和开发模式下使用不同的yml文件

  • 在生产服务器上,包含yml文件的目录与2个应用程序进行了符号链接

  • capistrano的任务看起来是这样的:

    namespace :settings do
      task :symlink, roles: :app do
        run "ln -s /path_to_settings/#{rail_env} #{current_path}/config/settings"
      end
    end
    
    after "deploy:create_symlink", "settings:symlink"
    
    “硬编码”是什么意思?如果您将它们放入代码中,那么它们将被硬编码。环境变量是一个不错的选择。