setting custom variables per environment

Hi,

I'd like to be able to set a variable for each environment I have.
It's a path to a folder that's different on each system: development
and production. I then, need to be able to read it from my controller.

How can I do this?

You can set it in application_controller.rb like this

case ENV['RAILS_ENV']
    when 'production' : var = 'foo'
    when 'development' : var = 'bar'
     ...etc
end

eggie5 wrote:

One slight mistake, thats controllers/application.rb not
application_controller.rb.

William Pratt wrote:

I put the exact code you wrote in my controllers/application.rb file,
then tried to access var on my other controller and it won't work.:

logger.info "***** var is : #{var}"

undefined local variable or method `var' for #<PrivateController:
0x3525be0>

sorry, I should have been more specific:

    case ENV['RAILS_ENV']
when 'production' : @var = 'foo'
when 'development' : @var = 'bar'
end

You need to make the variable an instance variable. Sorry, long day and
I was getting lazy.

eggie5 wrote:

Sorry, I am really not paying attention…if you want to access this
from another controller other than ApplicationController, you need to
make it a class variable like @@var.

William Pratt wrote:

Will I be able to access this form a model?

Will I be able to access this form a model?

No.

You could create a constant instead of a instance/class var by adding this
into your config/environments/development.rb:

SOME_VAR = "foo"
SOME_VAR.freeze

Then in production.rb do the same, but set it to something else.

what does the .freeze do?