dmitrvlad (dmitrvlad) wrote,
dmitrvlad
dmitrvlad

ruby

руссификация



RuTils


http://rutils.rubyforge.org/files/README.html - позволяет делать такие штуки:
  345.propisju => "триста сорок пять"
  15.items("кодер", "кодера", "кодеров") => "кодеров"
  (413.2).rublej => "четыреста тринадцать рублей двадцать копеек"
  Time.local(2005,"dec",31).strftime("%a, %A, %b, %B")          => "Сб, Суббота, Дек, Декабрь"
  Time.local(2005,"dec",31).strftime_norutils("%a, %A, %b, %B") => "Sat, Saturday, Dec, December"



ICONV


пробовал в руби перевести текст из cp1251 в koi8 в руби нормально не получается:
(не получается если в тексте есть символы которые iconv не знает как перекодировать из одной
кодировки в другую. причем утилита командной строки iconv тот же текст переводит отлично с ключом -c:
iconv -c -f cp1251 -t koi8r ,а в ruby не получается даже при указании //IGNORE//TRANSLIT или //IGNORE см тред http://groups.google.com/group/ruby-talk-google/browse_thread/thread/96c75d3587012556)


  require 'iconv'
  Iconv.iconv('koi8r//IGNORE//TRANSLIT','cp1251',text)

    получаем  Iconv::IllegalSequence
    $ ./test_iconv.rb
./test_iconv.rb:21:in `iconv': "\320\276\321\200\320\263 - \320\262\320\276\320\267\320"... (Iconv::IllegalSequence)
        from ./test_iconv.rb:21


зато в UTF8 все переводится на ура:

  Iconv.iconv('UTF8//IGNORE//TRANSLIT','cp1251',text)



пробовал потом этот utf8 перевести в koi8r - не работает.


Документация rdoc






http://www.ruby-lang.org/ - Home of ruby

http://www.cs.auckland.ac.nz/references/ruby/doc_bundle/Newcomers/ruby.html - 20 Things That Newcomers to Ruby Should Know

http://www.ruby-doc.org/ - main documentation site

http://rubyforge.org/

http://www.ruby-forum.com/forum/4 - web интерфейс к рассылке ryby-talk

Книги:

http://www.shokhirev.com/mikhail/ruby/ltp/ - Крис Пайн "Учись программировать" ( Learn To Program Chris Pine ) ISBN: 0-9766940-4-2

Учит программированию с нуля, но на ruby. Хорошо написанная книга и перевод.


http://www.rsdn.ru/article/ruby/ruby_edges.xml - Ruby-новые грани - отличная русскоязычная статья об особенностях ruby Евгения Охотникова - "e a o197 Со@oБaKa yahoo тчк com"

12 самоучителей. Все на англ. языке.

http://ajax.phpmagazine.net/2005/11/top_12_ruby_on_rails_tutorials.html

Краткий справочник по RoR. На англ. и Ruby.

http://blog.invisible.ch/files/rails-reference-1.1.html

Как начать проект на RoR. На этот раз по русски и с картинками (PDF, 1 метр)

http://sabanin.ru/wp-content/articles/Rolling_with_Ruby_on_Rails_rus_translation.pdf




http://www.easyeclipse.org/site/distributions/ruby-rails.html - попробовал поставить EasyEclipse for Ruby and Rails.(easyeclipse говорит что делает eclipse наборы заточенные конкретно для каких-то языков/задач, что облегчает людям жизнь при первом знакомстве с eclipse, так как сложно самом настроить такого монстра)

eclipse не понравился - глюки с отладчмком(debug), поставил http://www.netbeans.org




sudo gem in ruby-debug



почему-то в gentoo не хотел работать ruby -rdebug script.rb
при запуске он попадал внутрь какого-то auto_gem.rb, а не в script.rb.
Оказалось что это из-за переменной окружения RUBYOPT которая по умолчанию
в gentoo ставится в "-rauto_gem" (нафига??). после RUBYOPT="" все работает как надо
и никакие гемы без надобности не грузятся.




Работа с regexp-ами:


/: (\S+),v (\S+)/ =~ %q$Id: logger.rb,v 1.5.2.9 2006/08/04 22:00:21 drbrain Exp $
ProgName = "#{$1}/#{$2}"




Rails



http://api.rubyonrails.org/ - API documentation

отличия ror1 -> rails2



Deprecations

http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done

http://www.akitaonrails.com/2007/12/12/rolling-with-rails-2-0-the-first-full-tutorial

Rails 2.0.2: Some new defaults and a few fixes

лучше разрабатывать на последней стабильной версии рельсов
#> cd vendor
#> svn co http://svn.rubyonrails.org/rails/branches/1-2-stable rails
или ROR2:
#> svn co http://svn.rubyonrails.org/rails/tags/rel_2-0-0_PR/
так как в ror2 нет paginate - ставим для него plugin (почему-то из странного источника, в дефолтном нет...)
#>script/plugin install svn://errtheblog.com/svn/plugins/will_paginate
о моделях - таблицах- миграциях

Насколько понял модели работают так:

#> ruby script/generate model my_new_model

просто генерятся пустые файлики - шаблоны. в базу совсем не смотрится - даже если там уже есть таблица 'my_new_models'. Генерится первая миграция - вот в ней надо прописать структуру таблицы и применить эту миргацию. Но если быстрее - то миграции не используем, просто руками создаем таблицу 'my_new_models' в базе и она автоматически подцепляется в объект при вызове конструктора my_new_model.new().


http://goldberg.240gl.org - website generator создает "шаблонный" сайт на ROR


Документация rdoc


rdoc -d -a -o doc README RUNNING_UNIT_TESTS CHANGELOG lib

Полезное



Маршалинг


Задача - в директории data/ каждый файл это объект сохраненный с помощью Marshal.dump()
Объекты типа MyClass. Прошло время и я поменял MyClass и скажем добавил новый член. Хочется перегенерить объекты в data/ чтобы они соответствовали текущей реализации MyClass.

Dir.glob("data/*").each { |e|
 v = nil
 File.open(e) { |f| v = Marshal.load(f) }
 v.newattr = "default"
 File.delete(e)
 File.open(e,'w+') { |f| Marshal.dump(v,f) }
}



(ЗАМЕЧАНИЕ: когда сохраняешь объект MyClass с помощью Marshal.dump() и MyClass не имеет методов marshal_dump и marshal_load, то даже если мы потом добавим в MyClass методы marshal_[dump|load] и загрузим объект с помощью Marshal.load, то функция MyClass.marshal_load не будет вызвана, так как при сохранении объекта в файл ставится флаг TYPE_USRMARSHAL (marshal.c: #define TYPE_USRMARSHAL 'U') который говорит что файл был сохранен встроенной функцией, MyClass.marshal_load выполнится тогда, когда объект будет сохранен с MyClass.marshal_dump )




сохранение истории команд в irb


взято с
http://macdevelopertips.com/ruby/ruby-irb-command-history.html

для включения сохранения команд между сессиями в файле ~/.irb-history надо вставить такой код в .irbrc:


require 'irb/completion'
require 'irb/ext/save-history'

ARGV.concat [ "--readline",
              "--prompt-mode",
              "simple" ]

# 25 entries in the list
IRB.conf[:SAVE_HISTORY] = 25

# Store results in home directory with specified file name
IRB.conf[:HISTORY_FILE] = “#{ENV['HOME']}/.irb-history”
Subscribe
  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment