我如何初始化钱宝石?

时间:2009-09-03 14:35:02

标签: ruby-on-rails ruby rubygems initialization currency

我有一个新的宝石我正在玩,但我不知道在哪里放它以便它被初始化,但我不必每次都这样做我每次使用我的方法使用它

  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

我必须初始化它,否则它将无法工作,但如果我现在这样做,它会加载一个xml文件和其他任何东西。我怎么能这样做它每天只加载一次?

2 个答案:

答案 0 :(得分:2)

Money gem已经支持每隔很多秒获取汇率。您可以将代码设置为在require.rb文件中设置自动提取(RAILS_ROOT / config / initializers)。

Money.default_bank.auto_fetch 86400

来自Money文档:

  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

答案 1 :(得分:0)

将该逻辑放入application.rb并检查日期和时间。当日期发生变化时,请重新启动初始化以更新汇率。