Thursday, August 18, 2011

IndexError: string not matched ruby hash


irb(main):001:0> s = "string"

=> "string"

irb(main):006:0> s[ 'hi' ] = 'foo'

IndexError: string not matched

from (irb):6:in
Here you already declared 's' as string then you can't use it as hash.

Wednesday, August 17, 2011

yajl http_stream authentication

Yajl::HttpStream.get("http://username:password@www.example.com")

Net::HTTP and handling 302 Redirect


I meet two kinds of redirect: "Location" response and  tag.



Here's my solution:

================================================

require 'net/http'

require 'net/https'



http = Net::HTTP.new('www.microsoft.com', 80)

resp, data = http.get('/',nil)



#1."Location" response redirect...

if resp.response['Location']!=nil then

puts 'Direct to: ' + resp.response['Location']

redirectUrl=resp.response['Location']

end



#2. tag redirect...

redirectUrl=data.scan(//).to_s

if redirectUrl!=nil then

puts 'Direct to: ' +redirectUrl

end
http://www.ruby-forum.com/topic/142745

Mechanize and basic_auth


require 'mechanize'

agent = WWW::Mechanize.new

agent.basic_auth('username', 'password')

agent.get('www.example.com')

Tracking remote git branch

Tracking remote git branch


git branch --track feature1 origin/master

Tuesday, August 16, 2011

mechanize examples

#00 Initialization

require 'rubygems'

require 'mechanize'

agent = WWW::Mechanize.new

agent.set_proxy('localhost', '8000')

agent.user_agent = 'Individueller User-Agent'

agent.user_agent_alias = 'Linux Mozilla'

agent.open_timeout = 3

agent.read_timeout = 4

agent.keep_alive = false



agent.max_history = 0 # reduce memory if you make lots of requests



#01 manual get requests

url = 'http://apoc.sixserv.org/requestinfo/'

page = agent.get url

# or ...

page = agent.get(url, {"name" => "value", "key" => "val"})



#02 manual post submits

url = 'http://apoc.sixserv.org/requestinfo/'

page = agent.post(url, {"name" => "value", "key" => "val"})



#03 form post submits

page = agent.get 'https://twitter.com/login'

login_form = page.form_with(:action => 'https://twitter.com/sessions')

login_form['session[username_or_email]'] = '[Username]'

login_form['session[password]'] = '[Password]'

page = agent.submit login_form



#04 link and history navigation

page = agent.get 'http://www.heise.de/'

page = agent.click(page.link_with(:text => /Telepolis/))

page = agent.click(page.link_with(:href => /artikel/))

agent.back

agent.back

puts page.body



#05 exceptions

begin

page = agent.get 'http://apoc.sixserv.org/diese/seite/gibt/es/nicht/'

rescue WWW::Mechanize::ResponseCodeError

puts "ResponseCodeError - Code: #{$!}"

end



#06 referer

page = agent.get(:url => 'http://apoc.sixserv.org/requestinfo/',

:referer => 'http://google.com/this/is/a/custom/referer')

puts page.body



#07 request header manipulation

agent.pre_connect_hooks << lambda do |params|

params[:request]['X-Requested-With'] = 'XMLHttpRequest'

end



#08 response header

page = agent.head 'http://sixserv.org'

server_version = page.header['server']

puts "Server: #{server_version}"

if page.header.key? 'x-powered-by'

php_version = page.header['x-powered-by']

puts "X-Powered-By: #{php_version}"

end

# redirection urls:

agent.redirect_ok = false

page = agent.get 'http://www.sixserv.org/'

puts page.header['location']



#09 content parsing

# X Path / CSS-Selector:

page = agent.get 'http://xkcd.com/'

img = page.search '/html/body/div/div[2]/div/div[2]/div/div/img'

puts img

# Regular Expression:

page = agent.get 'http://example.com/'

page.body.match /< h3>([^<]+)< \/h3>/

puts "Heading 3: #{$1}"



#10 "with" method examples

# *_with: form, link, base, frame or iframe



# get the first link including "foo" inside url:

page.link_with(:href => /foo/)



# all links with text 'more'

page.links_with(:text => 'more')



# get the form with the name 'foo'

page.form_with('foo') # or form_with(:name => 'foo')

resque-schedular undefined method enqueue_at


initializers\resque.rb must reference resque_schedule.
require 'resque_scheduler' 
resque task must be started
COUNT=5 QUEUE=* rake resque:workers
resque-schedule task must be started
rake resque:scheduler
to monitor resque-schedule, resque-web must be started with the config file of resque as parameter. This one must not reference anything from rails directly as resque-web is a sinatra app and it won't be able to load it properly.
resque-web ~/pathToYourApp/config/initializers/resque.rb 
http://stackoverflow.com/questions/7048020/rails-3-0-9-resque-scheduler-and-delayed-job-error-undefined-method-enqueue-at

Monday, August 1, 2011