Хорошо, это может вам помочь - прежде всего, какую версию механизации вы используете? Вам необходимо определить, связана ли эта проблема с тем, что файлы cookie перезаписываются / очищаются с помощью механизма между запросами, или файлы cookie неверны / не устанавливаются в первую очередь. Вы можете сделать это, добавив puts @agent.cookie_jar.jar
между двумя запросами, чтобы увидеть, что хранится.
Если это проблема с перезаписью, вы можете решить ее, собирая файлы cookie из первого запроса и применяя их ко второму. Есть много способов сделать это:
Один из способов - просто сделать temp_jar = agent.cookie_jar.jar
, а затем просто просмотреть каждый файл cookie и снова добавить его, используя метод .add
ОДНАКО - самый простой способ - просто установить последнюю версию 2.1 предварительного релиза Mechanize (много исправлений), потому что тогда вы сможете сделать это очень просто.
Чтобы установить последнюю версию, выполните команду gem install mechanize --pre
и обязательно избавьтесь от старой версии Mechanize gem uninstall mechanize 'some_version'
, после этого вы можете просто сделать следующее:
require 'rubygems'
require 'nokogiri'
require 'mechanize'
@agent = Mechanize.new
page = @agent.post('http://<url>.com/user_session', {
'authenticity_token' => '<token>',
'user_session[login]' => '<login>',
'user_session[password]' => '<password>',
'user_session[remember_me]' => '0',
'commit' => 'Login'
})
temp_jar = @agent.cookie_jar
#Do whatever you need an use the cookies again in a new session after that
@agent = Mechanize.new
@agent.cookie_jar = temp_jar
page = @agent.get 'http://<url>.com/<organization>/<repo-name>/tickets/1'
puts page.title
Кстати, документация здесь http://mechanize.rubyforge.org/index.html