там вот в чем фигня, есть так называемые области видимости. (контексты) PHP: class Base puts "#{self.class.name}" end выведет Class, потому что описание класса тоже является объектом ( а мы знаем, что в руби ВСЁ является объектом ) Раз self в теле описания класса является объектом 'Class' (всё кроме объявления методов экземпляров класса) то мы можем вот что сделать: PHP: class Base def self.test(string) puts "#{string} from #{self.class.name}" end end def self -> объявляем метод в контексте класса Class, то есть создаём метод для объекта этого класса. Теперь мы сможем сделать следующее: PHP: // для наглядности унаследуем новый класс от класса Base // все методы, в том числе и методы класса Class тоже унаследуются class Core < Base test "This is test str" end этот код напишет: This is test str from Class В общем то на этом принципе основано море программ (например Rails) PHP: class User named_scope :not_activated, :conditions => ["active = ?", 0] end и затем где угодно в Rails-app: PHP: users_to_clear = User.not_activated() users_to_clear.each do |user| user.destroy() end
Xочу написать что то типо авторегалке на сайте есть несколько вопросов приложение будет GUI wxRuby. Уже 2ю книгу читаю а писать так нечего и не начал устал зубрить надо практиковатся мне надо парсить свою страницу сайта, узнать какие HTML теги отвечают за поле регистрация, найти ссылку которая введёт туда и каким то образом жмакнуть так понял мне нужно это Net::HTTP но как заставить перейти по ссылке ??, иммею ввиду программно жмакнуть по кнопке регистрация не открывая браузер Может другие методы есть и вообщем поправьте, правильно ли я себе всё это представляю или это совсем не так делается ??
Code: require 'net/http' #Получение страницы с регистрационной формой методом GET http = Net::HTTP.new('site.with.regform.ru', 80) path="/path/to/register.php" resp, data = http.get(path, nil) #Отсылка регистрационных данных методом POST cookie = resp.response['set-cookie'] path="/path/to/check/regform.php" data="login=examplelogin&pass=examplepass" headers = { 'Cookie' => cookie, 'Content-Type' => 'application/x-www-form-urlencoded'} resp, data = http.post(path, data, headers) #Вывод всех результатов и ответов puts 'Code = ' + resp.code puts 'Message = ' + resp.message resp.each {|key, val| puts key + ' = ' + val} puts data
Cпасибо пол дня блин ответ искал все форумы по Ruby вымершие какието мало людей юзают Ruby чтоли, а если и юзают то Рельсы и даже не понимают такие вопросы зачем вобще а мне просто интересно епрст Cпасибо буду копать дальше только не понял зачем Code: cookie = resp.response['set-cookie'] объясните новичку И ещё вопросик вот такой установил NetBeas при воде кода к примеру Code: puts = 'привет мир' вот такие вот какозябры как лечить помню давно пробовал что то в настройках исправил и всё норма стало сейчас не получается
Решил попробывать себя в изучение языка....Где тут ошибка) $tokens = gets.scan( /\)|\(|-?\d+/ ) def parse if tokens.first =~ /-?\d+/ $tokens.shift.to_f else $tokens.shift r = (parse + parse)/2.0 $tokens.shift r end end puts parse
ну это типа, ко второму запросу т.е. отсылки данных регистрации методом POST, в хедер прибавятся кукисы, которые сайт тебе дал при первом запросе. Это может и не пригодится, но обычно так всегда бывает. кодировку исправь. По умолчанию в винде cp1251, а ruby больше любит UTF-8. Так вот можешь либо в коде скрипта ставить кодировку: Code: $KCODE="<символ(обозначение) cp1251>" #для UTF-8 - "u" либо менять кодировку при выводе, например так: Code: require 'iconv' converter=Iconv.new('CP1251','UTF-8') #конвертит из UTF-8 в cp1251 puts converter.iconv("very st\range string") либо как ты говориш делал, изменить кодировку в настройках
забыл символ бакса в if'е Я не знаю, что это за методы(first и shift(по-мойму что-то с потоками)), но ты уверен что все будет гладко, если учесть что scan возврщает массив строк удовлетворяющих регулярке. И еще у тебя тут в случае если Code: [B]tokens.first[/B] =~ /-?\d+/ не верно, то метод parse ничего не вернет, однако в твоей рекурсии от него все равно будет требоватся значение в выражении: Code: r = (parse + parse)/2.0
скрипт загруженный на хостинг качает файлик .rar к себе же на хостинг в папку dowland, к примеру с depositfile, там как известно ограничение по времени около 60 секнд скрипт ждёт потом начинает закачку. Возможно такое ? какие библиотеки использовать ? если можно прмерчик где почитать может кто делал подобное.....
Code: require 'net/http' class Net::HTTP alias old_get get def get(path,headers) puts "my code" return self.old_get(path,headers) end end http=Net::HTTP.new('mail.ru', 80) puts http.get('/','') так чисто для себя помечаю, а то часто забываю про alias
Ребят подскажите мне новичку какие программы нужны для работы с Ruby?Я никак не могу понять куда вставлять файл,как устанавливатьего на винду и т.д. В общем,можете сделать небольшой faq по руби?Как вывести данные из файла в свет?( То есть если брать в пример PHP то сохраняешь файл в Php и через браузер заходишь,а как быть с руби?) В общем помогите ребят,без этого толку нету мне учить дальше.Оч оч оч прошу
если ты хочешь использовать Ruby как PHP т.е. а-ля сценарии веб-сервера, то нужно копать в сторону ROR, mod_ruby в апаче или cgi/fcgi с ruby. CGI, кстати, это обычный класс и работа с ним не представляет никакого гемора, и установок особых тоже никаких не требуется. Инструкция же по самому ruby, т.е. как запустить, можешь прочитать тут - http://blog.lukmus.ru/?p=57. Там ничего сложного нет: Code: ruby test.rb
Слушай в cmd при обращению к файлу *.rb выдает следующее: ruby: No such file or directory -- ex.rb <LoadError> что не так объясни прошу
у тебя ошибка гласит в переводе с английского: не найден файл или директория. я думаю это все объясняет напиши полностью что выполняешь, типа: Code: dir // показать список файлов ruby <имя файла>.rb
ты изучаешь руби в целом, я по этой книге тоже учился, она шикарная. если осилишь всю и потом попрактикуешься месяцок, то вскоре будешь разговаривать на ruby и недопонимать этот доисторический php и прочую телегу
о сейчас смог через cmd зайти в нужную папку(только странно что если я прописываю путь cd E:\example выходит вот такое чудо: Но если это все закинуть в C: то норм заходит Ах да и ещё при запуске файла появились вот такие вот каракули Прошу твоей помощи
print "Введите температуру и шкалу" (C or F):" str = gets exit if str.nil? or str.empty? str.chomp! temp, scale = str.split(" ") abort "#{temp} недпустимое число." if temp !~ /-?\d+/ temp = temp.to_f case scale when "C", "c" f = 1.8*temp + 32 when "F", "f" с = (5.0/9.0) * (temp -32) else abort "Необходимо задать C или F." end if f.nil? print "#{c} градусов C\n" else print "#{f} градусов F\n" end А как быть с каракулями?
Code: #!/usr/bin/ruby print "Введите температуру и шкалу (C or F):" str = gets exit if str.nil? or str.empty? str.chomp! temp, scale = str.split(" ") abort "#{temp} недпустимое число." if temp !~ /-?\d+/ temp = temp.to_f case scale when "C", "c" f = 1.8*temp + 32 when "F", "f" [COLOR=Red][SIZE=6]c[/SIZE][/COLOR]=(5/9)*(temp-32) else abort "Необходимо задать C или F." end if f.nil? print "#{c} градусов C\n" else print "#{f} градусов F\n" end выделенный символ ты написал в русской раскладке По поводу каракуль - попробуй посохранять файл в разных кодировках: cp1251 - родная для винды utf-8 - родная для ruby