Posts tagged ‘ruby’

Ruby`сты плачьте от счастья, Ruby 2.3

Если вы никогда не писали что-нибудь вроде:

if hash[:a] && hash[:a][:b] && hash[:a][:b][:c]
...

Или аналог для методов:

image = user && user.profile && user.profile.thumbnails && user.profile.thumbnails.large

Вам не понять насколько прекрасны эти две строки на Ruby 2.3:

image = user&.profile&.thumbnails&.large
# &&
value = hash.dig(:a, :b, :c)

Подробнее: http://habrahabr.ru/company/truevds/blog/271301/

Ruby, что ты делаешь, прекрати!

Вот вам повод для маленького утреннего холивара, без комментариев:

if true
  x = 1
end
if false
  y = 2
end
puts x
puts y
puts z

Проблемы с работой ActiveRecord во FreeBSD (iconv)

Написал я небольшое приложение на Ruby с использованием движка Ramaze, оттестировал и решил что пора ставить его “в живую”.
Поставить приложение решил на FreeBSD сервер, для работы нужен был gem ActiveRecord (куда без него). При запуске любой программы использующей ActiveRecord я получал такую ошибку:

i18n_interpolation_deprecation.rb:23:in `<simple>': undefined method `alias_method_chain' for I18n::Backend::Simple:Class (NoMethodError)
</simple>

Гугление по ошибке навело меня на страницу блога: http://john.vipvip.com/blog/?p=71, приведенный солюшн мне не подходил т.к. предпологалось что я ставил Ruby из портов, а у меня был Ruby 1.9-1 из сорсов с официального сайта.
Стало понятно главное – проблема в iconv модуле для Ruby, как оказалось в архиве Ruby есть такая папка ext/iconv/, но почему-то по умолчанию в файле ext/Setup, iconv закомментирован(за подробностями в файл README). Когда я убрал комментарии и еще раз попытался собрать Ruby iconv опять не собрался 🙁

Опять таки путем гугуления нашел следующие два треда:
http://groups.google.com/group/emm-ruby/browse_thread/thread/e4aa78aa9c1e4c9d
http://groups.google.com/group/emm-ruby/browse_thread/thread/e77c51cfd7589f51
То-ли FreeBSD`ный линковщик не добавлял кое-какие папки в опции сборки, то-ли Ruby не до конца сконфигурирован для сборки во FreeBSD, в общем родился маленький хак для нормальной сборки iconv + ruby. Редактируем файл ext/iconv/extconf.rb, после все “require” блоков добавляем две строки:

$LIBS 
 
&#1045;&#1097;&#1077; &#1088;&#1072;&#1079; &#1087;&#1099;&#1090;&#1072;&#1077;&#1084;&#1089;&#1103; &#1089;&#1086;&#1073;&#1088;&#1072;&#1090;&#1100; Ruby &#1080; &#1089;&#1076;&#1077;&#1072;&#1090;&#1100; make install, &#1090;&#1077;&#1086;&#1088;&#1077;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080; iconv &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1089;&#1086;&#1073;&#1088;&#1072;&#1090;&#1100;&#1089;&#1103; :)
 
<strong>P.S.</strong>
 
&#1042;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086; &#1074;&#1072;&#1084; &#1087;&#1086;&#1085;&#1072;&#1076;&#1086;&#1073;&#1080;&#1090;&#1089;&#1103; &#1087;&#1088;&#1077;&#1076;&#1074;&#1072;&#1088;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086; &#1087;&#1086;&#1089;&#1090;&#1072;&#1074;&#1080;&#1090;&#1100; iconv &#1080;&#1079; &#1087;&#1086;&#1088;&#1090;&#1086;&#1074;: 
<pre lang="bash">
cd /usr/ports/converters/iconv/
make install clean

Автоматизация, как много в этом слове. Автоматизация работы в Web часть 2

А на утро они проснулись…

Перечитав последнюю статью понял что “недоперепил” и не добавил почти никакой документации. Исправляюсь…

Официальная страница Watir на RubyForge:
http://wtr.rubyforge.org/
Страница на OpenQA.org(изобилует примерами и документацией):
http://wiki.openqa.org/display/WTR/Project+Home
Инструкция по установке FireWatir:
http://wiki.openqa.org/display/WTR/FireWatir+Installation
Небольшая статья по той же теме:
http://citforum.ru/programming/ruby/watir/