나는이 루비 https://github.com/mattetti/Pvwatts 래퍼 사용하기 위해 노력하고있어하지만 난 내 컨트롤러 응용 프로그램/컨트롤러/projects_controller.rb에 문제가있다 (관련 발췌)나가서 설명하자면 NameError (초기화되지 않은 상수 Savon :: 요청)
require 'rubygems'
require 'savon'
class ProjectsController < ApplicationController
<snip>
def annual_production
<snip>
client = Savon::Client.new("http://pvwatts.nrel.gov/PVWATTS.asmx?WSDL")
production_data = Pvwatts.new("<key>").yearly_production(:locationId => @locationId, :dc_rating => @dc_rating, :tilt => @tilt, :azimuth => @azimuth, :derate => @derate, :cost => @cost, :array_type => @array_type)
<snip>
respond_to do |format|
if @project.update_attributes(params[:project])
format.js
format.html
else
format.html { render :action => "update" }
format.json { render :json => @project.errors, :status => :unprocessable_entity }
end
end
end
end
class Pvwatts
Savon::Request.log = false
<snip>
def yearly_production(opts={})
<snip>
client = Savon::Client.new("http://pvwatts.nrel.gov/PVWATTS.asmx?WSDL")
<snip>
req = prep_request(@locationId, @dc_rating, @tilt, @azimuth, @derate, @array_type, @cost)
response = client.get_pvwatts{|soap| soap.input = "GetPVWATTS"; soap.body = req }
<snip>
end
end
이가 그 버튼을 클릭 SOAP 요청
<input type=button id='pvwatt_update_button_id' value="Update from PVWatts" class='pvwatt_update_button_class'>
를 트리거 버튼의 정의는,이 "500 내부 서버 오류"
Started GET "/projects/annual_production?id=4&keys=8<key>&reference_state=California&reference_city=San+Francisco&locationId=23234&dc_rating=1&tilt=20&azimuth=180&derate=80&cost=0.1&array_type=0" for <server_ip_address> at Tue Nov 20 20:07:18 -0800 2012
Processing by ProjectsController#annual_production as */*
Parameters: {"array_type"=>"0", "azimuth"=>"180", "locationId"=>"23234", "dc_rating"=>"1", "reference_city"=>"San Francisco", "keys"=>"<key>", "id"=>"4", "derate"=>"80", "reference_state"=>"California", "cost"=>"0.1", "tilt"=>"20"}
Project Load (0.2ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", "4"]]
Completed 500 Internal Server Error in 282ms
NameError (uninitialized constant Savon::Request):
app/controllers/projects_controller.rb:1697
app/controllers/projects_controller.rb:1628:in `annual_production'
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.6ms)
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.2ms)
Rendered /var/lib/gems/1.8/gems/actionpack-3.2.9/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (10.0ms)
를 얻을 수
누구든지 내가 뭘 잘못하고 있는지 알 수 있습니까? 여기
내 설치 보석 내 루비를[email protected]:/home/user/myapp# gem list
*** LOCAL GEMS ***
actionmailer (3.2.9)
actionpack (3.2.9)
activemodel (3.2.9)
activerecord (3.2.9)
activeresource (3.2.9)
activesupport (3.2.9)
akami (1.2.0)
arel (3.0.2)
builder (3.0.4)
bundler (1.2.2, 1.2.1)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.4.0)
erubis (2.7.0)
execjs (1.4.0)
git (1.2.5)
gyoku (0.4.6)
hike (1.2.1)
httpi (1.1.1)
i18n (0.6.1)
jeweler (1.8.4)
journey (1.0.4)
jquery-rails (2.1.3)
json (1.7.5)
libv8 (3.3.10.4 x86-linux)
mail (2.4.4)
mime-types (1.19)
multi_json (1.3.7)
nokogiri (1.5.5)
nori (1.1.3)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.2)
rails (3.2.9)
railties (3.2.9)
rake (10.0.2, 10.0.1)
rdoc (3.12)
sass (3.2.3)
sass-rails (3.2.5)
savon (1.2.0)
sprockets (2.2.1)
sqlite3 (1.3.6)
therubyracer (0.10.2)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.12)
tzinfo (0.3.35)
uglifier (1.3.0)
wasabi (2.5.1)
을 나열하고 여기이며, 레일 버전
[email protected]:/home/user/myapp# gem -v
1.8.15
[email protected]:/home/user/myapp# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
[email protected]:/home/user/myapp# rails -v
Rails 3.2.9
[email protected]:/home/user/myapp#
업데이트 1
NoMethodError (undefined method `debug' for :logger:Symbol):
app/controllers/projects_controller.rb:1757:in `yearly_production'
app/controllers/projects_controller.rb:1638:in `annual_production'
업데이트 2
NoMethodError (undefined method `get_pvwatts' for #<Savon::Client:0xb275c15c>):
app/controllers/projects_controller.rb:1737:in `yearly_production'
app/controllers/projects_controller.rb:1628:in `annual_production'
업데이트 3
나를 위해 일한 코드는 다음과 같다 :
Savon.configure do |c|
c.log = false
c.logger = Rails.logger
end
client = Savon::Client.new do
wsdl.document = "http://pvwatts.nrel.gov/PVWATTS.asmx?WSDL"
end
response = client.request :wsdl, "get_pvwatts" do
soap.body = req
end
rdata = response.to_hash
답장을 보내 주셔서 감사합니다 Steffen. 제안한 변경 사항을 구현했으며 위의 업데이트 1에서 오류가보고되었습니다. 어떤 생각이 아직도 잘못 됐나요? 감사합니다. – rh4games
로거 라인을 작성하기에는 너무 빠르다고 생각합니다. 로거 메소드를 구현하지 않았다면, 라인을 주석 처리하거나'Rails.로거 '를 실행합니다. 레일즈 애플리케이션에 통합하기 전에 일반적으로 작은 코드 스 니펫을 실행하려고합니다. –
후속 조치에 대해 Steffen에게 감사드립니다. 내 질문을 다시 편집하고 Update 3에 나와있는 코드를 추가했습니다. 도와 주셔서 정말로 고맙습니다. – rh4games