Ruby 在何处放置身份验证信息
所以我正在用VisualRuby制作一个可以推特的小程序。下面是我的Ruby 在何处放置身份验证信息,ruby,authentication,user-interface,twitter,rubygems,Ruby,Authentication,User Interface,Twitter,Rubygems,所以我正在用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 include
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>'
C:/Users/*/visualruby/Test/bin/LoginWindow.rb:22:in'button1\uu clicked':未定义的局部变量或方法'client'#
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“解析信号中的块(3级)”中
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'
来自C:/Ruby193/lib/ruby/gems/1.9.1/gems/vrlib-0.0.33/lib/GladeGUI.rb:331:在“显示窗口”中
来自C:/Users/*/visualruby/Test/bin/LoginWindow.rb:17:in'show'
从main.rb:14:in`'
我不认为我应该把
client=Twitter….
东西放在LoginWindow
类中,但我想不出其他地方可以放它。关于如何解决这个问题有什么想法吗?这是一个快速解决您需要的问题的方法。
在您的LoginWindow.rb中
def initialize
@client = TwitterOAuth::Client.new(
:consumer_key => '****',
:consumer_secret => '****',
:token => '****-****',
:secret => '****'
)
end
def button1__clicked(*argv)
if @client.authorized?
puts "true"
end
end
这个解决方案的问题是,在没有初始化LogginWindow之前,您不能调用button1_clicked,所以请小心。也许您应该在实例变量中转换客户端。您可以在初始化方法中调用TwitterOAuth。@amalrikmaia您的确切意思是什么?你是说有一个包含实例变量
@client
的初始化函数吗?你是说有一个包含实例变量@client的初始化函数吗?是的。@amalrikmaia这很有效,这么简单的解决方案我不知道为什么我没有想到它。请将此作为答案发布,我会批准它,非常感谢!!