2013-11-18 4 views
1

Я использую dashing weather widget, но, похоже, создается ошибка при запуске файла задания Ruby. Ниже это рубин файлRuby Неинициализированная постоянная ошибка

require 'net/https' 
require 'json' 

# Forecast API Key from https://developer.forecast.io 
forecast_api_key = "" 

# Latitude, Longitude for location 
forecast_location_lat = "45.429522" 
forecast_location_long = "-75.689613" 

# Unit Format 
# "us" - U.S. Imperial 
# "si" - International System of Units 
# "uk" - SI w. windSpeed in mph 
forecast_units = "si" 

SCHEDULER.every '5m', :first_in => 0 do |job| 
    http = Net::HTTP.new("api.forecast.io", 443) 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER 
    response = http.request(Net::HTTP::Get.new("/forecast/#{forecast_api_key}/#{forecast_location_lat},#{forecast_location_long}?units=#{forecast_units}")) 
    forecast = JSON.parse(response.body) 
    forecast_current_temp = forecast["currently"]["temperature"].round 
    forecast_current_icon = forecast["currently"]["icon"] 
    forecast_current_desc = forecast["currently"]["summary"] 
    if forecast["minutely"] # sometimes this is missing from the response. I don't know why 
    forecast_next_desc = forecast["minutely"]["summary"] 
    forecast_next_icon = forecast["minutely"]["icon"] 
    else 
    puts "Did not get minutely forecast data again" 
    forecast_next_desc = "No data" 
    forecast_next_icon = "" 
    end 
    forecast_later_desc = forecast["hourly"]["summary"] 
    forecast_later_icon = forecast["hourly"]["icon"] 
    send_event('forecast', { current_temp: "#{forecast_current_temp}°", current_icon: "#{forecast_current_icon}", current_desc: "#{forecast_current_desc}", next_icon: "#{forecast_next_icon}", next_desc: "#{forecast_next_desc}", later_icon: "#{forecast_later_icon}", later_desc: "#{forecast_later_desc}"}) 
end 

и выдает ошибку /forecast.rb:3: invalid multibyte char (US-ASCII) (SyntaxError)

который является странным, потому что линия 3 является пустым в файле.

Поэтому я решил добавить в начало файла, чтобы попытаться исправить это, но затем я получаю ошибку uninitialized constant в строке 4 (опять же пустую строку). может кто-нибудь помочь мне с этим?

Полное сообщение об ошибке было

/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:3: warning: method redefined; discarding old default_dir 
/usr/lib/ruby/1.9.1/rubygems/defaults.rb:25: warning: previous definition of default_dir was here 
/usr/lib/ruby/vendor_ruby/rubygems/defaults/operating_system.rb:7: warning: method redefined; discarding old default_bindir 
/usr/lib/ruby/1.9.1/rubygems/defaults.rb:96: warning: previous definition of default_bindir was here 
/home/pi/xxxxx/jobs/forecast.rb:3: invalid multibyte char (US-ASCII) 
+0

Как генерировать этот файл? Соответствует ли кодировка между вашим редактором и временем выполнения Ruby? – Vidya

+0

файл прогноза.rb находится в папке заданий липкого экземпляра. Когда литиевая инициализирована, этот файл запускается. Я не уверен, что такое кодировка Ruby runtime. Как мне это проверить? – user1893354

+0

Можете ли вы пройти полное сообщение об ошибке? Можете ли вы проверить синтаксис и предупреждения с помощью 'ruby -c -w /forecast.rb'? –

ответ

2

SCHEDULER Я изменил к Dashing.scheduler и смог пройти эту ошибку.

Смежные вопросы