ruby – 未定义的方法`bytesize’for# - 代码日志

ruby – 未定义的方法`bytesize’for#

我想在GAE中存储和更新博客标签到数据存储区。
当我运行该代码,我得到这个错误:

javax.servlet.ServletContext log: Application Error
/base/data/home/apps/yet-another-problem/1.334886515480009498/WEB-INF/gems/gems/sinatra-0.9.2/lib/sinatra/base.rb:45:in `each': undefined method `bytesize' for #<Hash:0x86684c> (NoMethodError)

代码

class Labels
   class LabelData
    include Bumble
    ds :blog_element_labels
   end

  def update
    response = URLFetch.get($label_url)
    result = response.to_s
    result_headless = result.gsub("listLabels(",'')
    pure_result = result_headless.gsub(");",'')
    json_to_yaml = YAML::load(pure_result)['entry']['category']

    json_to_yaml.each do |label|
    @label = LabelData.find(:blog_element_labels => label['term'])
    @label = LabelData.create(:blog_element_labels => label['term']) if @label.nil?
    end
  end
end

由cron工作执行’/ job’

get '/job' do
  @labels = Labels.new
  @labels.update
end

哪里有问题?请教我。

但是当第一次运行cron作业时,标签数据被存储,甚至发生错误。
无法更新数据。

我想你有同样的问题在这里讨论:error happens when I try “all” method in datamapper

在你的情况下,Sinatra正试图将@ lavels.update的返回值转换成一个字符串,向用户显示。

尝试这样看看它是否解决了这个问题:

get '/job' do
  @labels = Labels.new
  @labels.update
  "Labels Updated"
end

你的返回值现在是一个字符串,所以你不应该得到错误。

http://stackoverflow.com/questions/1123666/undefined-method-bytesize-for-hash

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby – 未定义的方法`bytesize’for#