ruby – Sinatra不是以twitter gem开头的
当我尝试启动sinatra时,我遇到了以下错误
/var/lib/gems/1.9.1/gems/sinatra-1.4.4/lib/sinatra/base.rb:1488:in start_server’:HTTP的undefined methodrun’:模块(NoMethodError) require 'sinatra/base' require_relative "twt.rb" class SinatraApp < Sinatra::Base set :static,true set :public_folder,File.dirname(__FILE__) + '/static' get '/getuserinfo' do @user = twit.getuserinfo erb :userInfo end end SinatraApp.run! 在“twt.rb”我需要推特(5.7.1) require 'twitter' class Twit attr_accessor :client def initialize(consumer_key,consumer_secret,access_token,access_token_secret) @client = Twitter::REST::Client.new do |config| config.consumer_key = consumer_key config.consumer_secret = consumer_secret config.access_token = access_token config.access_token_secret = access_token_secret end end def getUserInfo return user = { "name"=> client.current_user.name,"id" => client.current_user.id } end def showAllFriends client.friends.each { |item| puts item.name } end def showFollowers client.followers.each { |item| puts item.screen_name } end def showAllTweets client.user_timeline.each {|item| puts item.text} end def showAllUserTweets(userScreenName) client.user_timeline(userScreenName).each {|item| puts item.text} end def sendTweet(content) client.update(content) end end 如果我删除require_relative“twt.rb”行sinatra工作正常. 解决方法
当您使用内置Web服务器运行Sinatra应用程序时(就像使用SinatraApp.run一样!),Sinatra尝试通过依次检查服务器列表来确定使用哪个服务器以查看哪些服务器可用.实际列表
depends on the version of Ruby you are using,但它总是检查的一个服务器是
net-http-server,简称为
HTTP .
Sinatra检查服务器可用性的方法是使用calls Twitter宝石depends on the 所以在这种情况下发生的事情是Sinatra正在检查HTTP服务器是否可用,但是Rack正在从http gem返回HTTP模块,http gem不是服务器.不是Rack服务器,它没有run方法,所以当Sinatra尝试使用它时,你会得到错误start_server’:未定义的方法`run’用于HTTP:Module. 一种解决方法是不使用内置服务器,例如您使用config.ru文件发现并使用rackup启动应用程序的方式. 另一个解决方案是明确specify the server to use in your Sinatra app.例如,您可以安装Thin,然后使用: set :server,'thin' 事实上,只需安装Thin就足够了,因为在HTTP之前搜索Thin,但您可能更好地明确设置要使用的服务器.如果您因任何原因无法安装任何其他服务器,则可以使用Webrick: set :server,'webrick' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |