Ruby on rails 3 从rake任务内部访问compute_asset_主机?

Ruby on rails 3 从rake任务内部访问compute_asset_主机?,ruby-on-rails-3,rake,actionview,Ruby On Rails 3,Rake,Actionview,我尝试过包括ActionView::Helpers::AssetTagHelper和一系列的变体,但我总是收到一个错误,对main:Object说NameError:undefined local variable或methodconfig'` 更新了更多信息 我需要能够根据环境引用存储在不同服务器上的资源。在我的开发机器上,它将在localhost:3000处被引用,在生产服务器上,它将位于一个CDN地址,在登台时,它将位于另一个CDN地址。显然,我们希望首先在本地测试这个rake任务,然后在

我尝试过包括ActionView::Helpers::AssetTagHelper和一系列的变体,但我总是收到一个错误,对main:Object说
NameError:undefined local variable或method
config'`

更新了更多信息


我需要能够根据环境引用存储在不同服务器上的资源。在我的开发机器上,它将在localhost:3000处被引用,在生产服务器上,它将位于一个CDN地址,在登台时,它将位于另一个CDN地址。显然,我们希望首先在本地测试这个rake任务,然后在登台测试,最后在登台测试,因此rake任务需要能够基于资产主机配置变量生成url。实际上,我甚至创建了一个名为
asset\u path
的ApplicationHelper方法来在我的视图中执行此操作,但它基本上只是的别名。但是,如果我在rake任务中包含ApplicationHelper并调用
asset\u path
它会抱怨compute\u public\u path未定义,然后如果我包含(或扩展)ActionView::Helpers::AssetTagHelper,它会从compute\u asset\u主机内部抱怨main:Object的
未定义局部变量或方法“config”。因此,我需要以某种方式调用ActionView::Helpers所使用的配置容器的任何实例,以便compute_asset_host可以根据环境返回正确的URL。

这很难看,我试图绕开这类操作,但

namespace :test do

  def view(url_options = {}, *view_args)
    view_args[0] ||= ActionController::Base.view_paths
    view_args[1] ||= {}

    view = ActionView::Base.new(*view_args)
    routes = Rails::Application.routes
    routes.default_url_options = {:host => 'localhost'}.merge(url_options)

    view.class_eval do
      include ApplicationHelper
      include routes.url_helpers
    end

    assigns = instance_variables.inject(Hash.new) do |hash, name|
      hash.merge name[1..-1] => instance_variable_get(name)
    end
    view.assign assigns

    view
  end  

  task :it => :environment do
    param = ""
    puts ">>> compute_asset_host returns: [#{view.send("compute_asset_host", param)}]"
  end

end
。。。可能会让你找到解决问题的方向

PS:我在这里找到了查看方法:

这就是我所做的

task :it => :environment do
  include ActionView::Helpers
  include ApplicationHelper
  # your code here
end

你能补充更多关于你想要完成什么的细节吗?我不清楚为什么要在rake任务中调用视图助手。