среда, 10 июля 2013 г.

Whenever gem is not working in rails 4 :(

   В Rails 4 не работает whenever (https://github.com/javan/whenever). Патч уже написали(https://github.com/javan/whenever/pull/332), но в master бранче этой заплатки нет.

  Вот как можно получить рабочий whenever, пока автор не пришел и молча не поправил все:

Без жалости и сомнений удаляем гем, если он стоит
Именем Императора; gem uninstall whenever

В Gemfile забираем гем с гитхаба от автора патча iTakeshi:
gem 'whenever', 
                git: 'git://github.com/iTakeshi/whenever.git', 
                branch: 'rails4', require: false

Все, осталось только настроить.
Настройка на developmen. Из директории проекта:
bundle exec wheneverize

заполняете config/schedule.rb тем что вам нужно, затем

задаем development-окружение и обновляем crontab
bundle exec whenever --set environment='development' --update-crontab
проверьте что все правильно
crontab -l
В строке крона после ключа -e должно быть development, (по умолчанию там production).

Все, крон пашет :)  Пока не пропатчили основной гем, это хороший выход :)

воскресенье, 7 июля 2013 г.

Rails 4 и attr_accessible

attr_accessible больше не работает в Rails 4.

  Вместо него теперь strong params (https://github.com/rails/strong_parameters). Отличное описание.

Приведу быстрый пример:

Если в классе было
attr_accessible :name, :email
то теперь это заменит приватный метод в контроллере

private  
 def user_param  
  params.require(:user).permit(:name, :email)  
 end  

И теперь при создании или апдейте user в контроллере вместо

@user = User.create(params[:user])  

используем

@user = User.create( user_param )  


среда, 3 июля 2013 г.

Kingdom in trouble!

   Давным-давно я написал на чистой Java игру про то, как пауки ломятся к замку чтобы разобрать его. Tower defense.
   Выглядело вот так:



Ну она и сейчас так выглядит - я только что сделал скриншот :)

Это было круто и увлекательно. Например поиск пути на А* сам по себе стоил того чтобы начинать делать игру:


   Основной вывод что я вынес из этого опыта - надо пользоваться фреймворками, там где это уместно. Я не пользовался ничем принципиально - только JavaSE сore, только хардкор :) 
  Попозже добавил Spring Framework(ради dependency injection).

   С другой стороны, в учебных целях я бы советовал делать именно так - все сделать самому, можно узнать много нового и бесполезного :)

ЗЫ
   Интересно как дела с геймдевом обстоят на Ruby. Если ничего не найду - сделаю что-нибудь сам. С блекджеком и шлюхами.


"rails console is no more, it's ex-console..."

      Привет бложик!

  Рейлган сломался. C ruby 2.0.0 и rails 4 перестала запускаться консоль. И это в моей Ubuntu 12!!1

rbenv/versions/2.0.0-p195/lib/ruby/2.0.0/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)

 Таблетка:
sudo apt-get install libreadline-gplv2-dev
sudo apt-get install libreadline5-dev libncurses5-dev
sudo gem install rb-readline

  затем переконфигурить и пересобрать руби:
cd <ruby_src_dir>
ruby extconf.rb
make
make install

  Если у вас стоит rbenv, то можно ставить через него:
rbenv install 2.0.0-p195
rbenv rehash

  Последняя строчка обновит окружение.
  Если не заработали команды ruby/rails-
gem update
exec $SHELL -l
Если и после этого не появились, то надо посмотреть есть ли в EXECUTABLE DIRECTORY в PATH.
Смотрим
gem environment | grep 'EXECUTABLE DIRECTORY'
и смотрим
echo $PATH - чтобы понять есть ли она там.

Если стоит rbenv то вместо executable directory в PATH должен быть вместо нее путь к rbenv/shim.

Готово. Рельсоконсоль как новая.

Rails on the Road

Дожен... постить... про rails....  raaaaaailssss....