我想将博客标签存储和更新到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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
并由cron job运行'/ job'
get '/job' do
@labels = Labels.new
@labels.update
end
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?请教我.
但是当第一次运行cron作业时,标签数据被存储,甚至发生错误.无法更新数据.
我的目标是start_tag_handler(见下文)在找到/ tag 时获取apps/ titlecontent (请参阅下面的示例XML).appstitle
并
end_tag_handler在找到/ tag 时获取apps/ logscontent .appslogs
但相反,此代码返回null并退出.
#!/usr/local/bin/perl -w
use XML::Twig;
my $twig = XML::Twig->new(
start_tag_handlers =>
{ 'apps/title' => \&kicks
},
twig_roots =>
{ 'apps' => \&app
},
end_tag_handlers =>
{ 'apps/logs' => \&bye
}
);
$twig -> parsefile( "doc.xml");
sub kicks {
my ($twig, $elt) = @_;
print "---kicks--- \n";
print $elt -> text;
print …Run Code Online (Sandbox Code Playgroud) 我尝试为每个标记调用子例程,但从end_tag_handlers不调用它.
我的目标是这个序列:
--- ---序列
时<auto>调用\&loading.
当<apps><title>通话\&kicks.
当<apps><logs>通话\&bye.
当<apps>通话\&app.
当<apps><title>通话\&kicks.
当<apps><logs>通话\&bye.
当<apps>通话\&app.
当</auto>通话\&finish.→ 没有打电话.
temp.pl:
#!/usr/local/bin/perl -w
use XML::Twig;
my $twig = XML::Twig->new(
start_tag_handlers =>
{ 'auto' => \&loading
},
twig_handlers =>
{ 'apps/title' => \&kicks,
'apps/logs' => \&bye
},
twig_roots =>
{ 'apps' => \&app
}, …Run Code Online (Sandbox Code Playgroud)