gpt4 book ai didi

ruby 新手 : undefined method `with_indifferent_access'

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:26 24 4
gpt4 key购买 nike

我是一名新的 Ruby 程序员,我的一位同事帮助我开始编写了以下代码,该代码在他的环境中运行良好。但是,当我尝试在自己的环境中运行它时,出现以下错误:undefined method 'with_indifferent_access' for #<Hash:0x1012392c0> (没有方法错误)

有问题的方法在代码中出现了两次:

require 'rubygems'

gem 'activerecord'
gem 'activesupport'
gem 'sailthru-client'

require 'active_support'
require 'active_record'
require 'sailthru'

# Setup our Sailthru object using our production Sailthru account information
sailthru = Sailthru::SailthruClient.new()

# Read database information from the database.yml file
CONFIG = YAML.load_file(File.join(File.dirname(__FILE__), 'database.yml')).with_indifferent_access

# Create a simple way for us to iterate through all publications
class Publication < ActiveRecord::Base
establish_connection CONFIG[:production]
set_table_name 'publications'
end

# Create a simple way for us to store data locally
class CurrentReport < ActiveRecord::Base
establish_connection CONFIG[:development]
set_table_name 'current_reports'
end

class MonthlyReport < ActiveRecord::Base
establish_connection CONFIG[:development]
set_table_name 'monthly_reports'
end

types = %w[Daily Weekly]

Publication.find_each(:select => :id) do |publication|
begin
types.each do |newsletter_type|
# Get the stats for each mailing list
response = sailthru.stats_list("#{newsletter_type} Newsletter - #{publication.id}").with_indifferent_access

if response[:error]
puts "Sailthru Error #{response[:error]}: #{response[:errormsg]}"
else
# Try to find an existing record for this newsletter
daily = CurrentReport.find_or_initialize_by_list(response[:list])
# and update it with the information from the response (minus the monthly signup info)
puts "Updating #{newsletter_type} Newsletter - #{publication.id} ..."
daily.update_attributes(response.reject { |k,v| k =~ /signup/ })

# Iterate through the monthly signup info
response['signup_month'].each do |k, v|
# And try to save it
monthly = MonthlyReport.find_or_initialize_by_list_and_month(response[:list], k)
# Only save new months, because the old months never change
if monthly.new_record?
monthly.update_attributes(v)
puts "\tAdding #{v[:month]} to #{response[:list]} ..."
end
end
end
end
# rescue NoMethodError => e
# puts "Got a NoMethodError for some reason. Here's the publication: #{publication.inspect}\n\nHere's the types array: #{types}"
end
end

我试过不同版本的ruby,比如ruby-1.8.7,都没有用。我不知道如何解决这个问题。我知道这个方法存在于某个地方,因为我已经看到它起作用了。我愿意接受有关下一步尝试的任何建议。

最佳答案

尝试使用:

require 'active_support/core_ext/hash'

这就是将 with_indifferent_access 方法实际添加到普通 Hash 类的原因。

关于 ruby 新手 : undefined method `with_indifferent_access' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5355998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com