From this http://www.rubydoc.info/github/Shopify/active_merchant/ActiveMerchant%2FBilling%2FBase.gateway
I should just initialize an instance of active_merchant using this
gateway = ActiveMerchant::Billing::Base.gateway( gateway_name ).new(
:username => :some_credential
:password => :some_other_credential
)
But I don’t know :username
or :password
in advance, however they are in the fixtures file https://github.com/activemerchant/active_merchant/blob/master/test/fixtures.yml here. So how to do this properly?
For an example, in the fixtures.yml file we can see this..
adyen:
username: ''
password: ''
merchant_account: ''
Accordingly we can initialize with this..
gateway = ActiveMerchant::Billing::Base.gateway( 'adien' ).new(
username: => :some_credential
password: => :some_other_credential
merchant_account: => some_more_credential
)
I need to be able to initialize the gateway instance without hard-coding the username:
, password:
and merchant_account:
parameters in the above example.
Thanks in advance!
3
Answers
I think i can answer my own question. One should pass every different initialization with its own hash..
Note that I could pass different options without the need to hardcode any keys, which is what i desired.
You should take a look at environment variables. They let you define variables in a safe palce and refer to them when needed.
Somewhere you would define
PASSWORD=mysecretpassword
and then in the Rails code you refer to it asENV["PASSWORD"]
There are many ways of doing this. Take a look here:
http://railsapps.github.io/rails-environment-variables.html
The username, password, and merchant_account are instance variables so you need to change them with
instance_variable_set