2009-09-03 4 views
1

J'ai une nouvelle gemme avec laquelle je joue, mais je ne sais pas où la mettre pour qu'elle soit initialisée, mais que je n'ai pas à le faire chaque fois que j'utilise ma méthode qui l'utilise .comment initialiser la gemme de l'argent?

def self.get_rate(from, to, amount) 
    Money.default_bank.fetch_rates #<---------------- Here it is... 

    if to == "USD" or from == "USD" 
     rate = Money.default_bank.get_rate(from, to) * amount 
    else 
     rate_to_us = Money.default_bank.get_rate(from, "USD") * amount 
     rate = Money.default_bank.get_rate("USD", to) * rate_to_us 
     #rate = Money.default_bank.get_rate(params[:currency][:from], "USD") 
    end 
    rate = Money.new(rate.to_money,to).format(:with_currency) 
    end 

je dois initialiser une fois sinon cela ne fonctionnera pas, mais si je le fais comme il est maintenant, il charge un fichier xml et tout le reste. Comment puis-je le faire pour qu'il ne se charge qu'une fois par jour?

Répondre

2

La gemme Money prend déjà en charge l'extraction du taux de change toutes les secondes. Vous pouvez placer le code pour définir l'extraction automatique dans votre fichier require.rb (RAILS_ROOT/config/initializers).

Money.default_bank.auto_fetch 86400 

De l'argent docs:

Money.default_bank.fetch_rates   # Fetch the rates 
    Money.default_bank.auto_fetch 3600  # Fetch the rates every hour 
    Money.default_bank.stop_fetch   # Stop auto-fetch 
0

Mettez cette logique dans application.rb avec une vérification de la date et de l'heure. Lorsque le jour change, redémarrez l'initialisation pour mettre à jour les taux de change.

Questions connexes