Ruby on rails 全局变量在生产中不起作用

Ruby on rails 全局变量在生产中不起作用,ruby-on-rails,global-variables,production,Ruby On Rails,Global Variables,Production,我有以下一对控制器: Admin::BaseController-用于应用程序的后端 Base::BaseController-用于应用程序的前端 在Admin::BaseController中,我设置了以下全局变量: $FRONTEND = false 在Base::BaseController中,我将其设置如下: $FRONTEND = true 我这样做是为了能够在各种型号中执行以下操作: def to_param If $FRONTEND ... else

我有以下一对控制器:

Admin::BaseController-用于应用程序的后端

Base::BaseController-用于应用程序的前端

在Admin::BaseController中,我设置了以下全局变量:

$FRONTEND = false
在Base::BaseController中,我将其设置如下:

$FRONTEND = true
我这样做是为了能够在各种型号中执行以下操作:

def to_param
   If $FRONTEND
      ...
   else
      ...
   end
 end

这在开发中起作用,但在生产中不起作用。我知道我可能无论如何都不应该使用全局变量。有什么好的替代方法吗?

创建环境变量而不是那个。
例如env['name ur variable']=environment.rb文件中的值

您可以使用Figaro gem设置环境变量。在这里查看:

它允许您非常轻松地设置开发和生产变量


然后,您可以使用
ENV['name']
访问它们,上面提到的gem也会将它们添加到您的Heroku帐户中(假设您在Heroku上托管)

然后我可以在控制器中更改环境变量吗?例如,我可以在environment.rb中设置:env['front_end']=true,然后在admin::base控制器中将其更改为false?然后我可以在控制器中更改环境变量吗?例如,我可以在environment.rb中设置:env['front_end']=true,然后从admin::base controller将其更改为false?