我不确定这是在ServerFault上还是在这里,因为它是在Rails 3.2.3应用程序中特定于Mechanize和Nokogiri的服务器问题。机械化rake任务适用于某些服务器,但不适用于其他服务器?
我有一个rake任务,可以从我们的服务提供商网站中删除纬度和经度。
我已经将任务设置在'crontab -e'以及其他任务中。出于某种原因,在两个supposidly idential服务器,一个服务器失败,出现以下错误,完成rake任务:
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
Message-Id: <[email protected]>
Date: Tue, 10 Apr 2012 14:46:30 +0100 (BST)
rake aborted!
/var/www/railsapp/lib/tasks/peoplesafelocation.rake:29: undefined (?...) sequence: /new GLatLng\(\s*(?<lat>.+?)\s*,\s*(?<long>.+?)\s*\)/
两个服务器运行的Rails 3.2.3,1.9.2红宝石。
我不明白为什么在一台服务器上会出现'未定义(?...)序列',但没有另一台服务器。
这两台服务器都使用RVM并运行Ubuntu 10.04。
全rake任务如下:
desc "Import Peoplesafe Location"
task :fetch_peoplesafelocation => :environment do
# Logs into provider.co.uk/live and retrieved latitude and longitude.
require 'rubygems'
require 'mechanize'
require 'logger'
require 'nokogiri'
# Create a new mechanize object
agent = Mechanize.new
# Load the Peoplesafe website
page = agent.get("http://provider.co.uk/live/")
# Select the first form
form = agent.page.forms.first
form.username = 'User'
form.password = 'Password'
# Submit the form
page = form.submit form.buttons.first
page = agent.get("http://provider.co.uk/live/?gps&cid=AAXA-PJZM6M")
html_doc = page.root
script = page.at('/html/head/script[not(@src)]')
parts = script.text.match(/new GLatLng\(\s*(?<lat>.+?)\s*,\s*(?<long>.+?)\s*\)/)
#puts parts[:lat], parts[:long]
Location.create(:latitude => parts[:lat], :longitude => parts[:long])
puts 'Location Updated'
末
,将不胜感激任何指针!
有人似乎误导了你正确的正则表达式。也许如果你发布的HTML。 – pguardiario 2012-04-10 14:46:53