1
所以我在VisualRuby上做了一個可以發推文的小程序。因此,這裏是我的main.rb
是什麼樣子:把認證信息放在哪裏
#!/usr/bin/ruby
require 'vrlib'
require 'twitter_oauth'
#make program output in real time so errors visible in VR.
STDOUT.sync = true
STDERR.sync = true
#everything in these directories will be included
my_path = File.expand_path(File.dirname(__FILE__))
require_all Dir.glob(my_path + "/bin/**/*.rb")
LoginWindow.new.show
和我LoginWindow.rb
看起來像這樣
require 'twitter_oauth'
class LoginWindow #(change name)
include GladeGUI
client = TwitterOAuth::Client.new(
:consumer_key => '****',
:consumer_secret => '****',
:token => '****-****',
:secret => '****'
)
def show()
load_glade(__FILE__) #loads file, glade/MyClass.glade into @builder
set_glade_all() #populates glade controls with insance variables (i.e. Myclass.label1)
show_window()
end
def button1__clicked(*argv)
if client.authorized?
puts "true"
end
end
end
最後我的窗前,看起來像這樣:
現在,當我運行這個,然後點擊登錄按鈕,VR吐出來
C:/Users/*/visualruby/Test/bin/LoginWindow.rb:22:in `button1__clicked': undefined local variable or method `client' for #<LoginWindow:0x3f56aa8>
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:146:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:146:in `block (3 levels) in parse_signals'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:331:in `call'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:331:in `main'
from C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:331:in `show_window'
from C:/Users/*/visualruby/Test/bin/LoginWindow.rb:17:in `show'
from main.rb:14:in `<main>'
我不認爲我應該把client = Twitter....
的東西放在LoginWindow
這個班裏,但我想不出其他任何地方。有關如何解決此問題的任何想法?
也許你應該在實例變量中轉換客戶端。您可以在初始化方法中調用TwitterOAuth。 – 2013-04-30 19:48:30
@amalrikmaia你究竟是什麼意思?你是否說在它內部有一個實例變量'@ client'的初始化函數? – Richard 2013-04-30 20:43:36
_你說有一個初始化函數,裏面有一個實例變量@client?_是。 – 2013-04-30 21:09:33