Ответы пользователя по тегу Ruby
  • Чем хорош Ruby?

    AMar4enko
    @AMar4enko
    Во-первых rubygems.
    Во-вторых пример из жизни - есть gem. С десяток классов, все друг друга используют.
    Возникла необходимость чуть-чуть изменить поведение пары методов одного из классов - так бывает.
    Что вы будете делать в случае с php? Вы сделаете локальную копию библиотеки, поломаете методы так, как вам нужно.
    В случае с ruby вы можете:
    1. Полностью изменить реализацию одного метода конкретного класса
    2. Обернуть существующую реализацию своим кодом, с помощью сохранения старого метода под новым именем с помощью alias_method
    В-третьих - метапрограммирование. Хотя по значимости это стоило на первое место поставить. Именно благодаря метапрограммированию код на Ruby лаконичен и легко читаем.
    В-четвертых, мне просто приятно иметь возможность писать конструкции типа 2.hours.ago - догадаетесь, чего она делает?
    Ответ написан
    1 комментарий
  • Custom routes в Sinatra (Padrino)?

    AMar4enko
    @AMar4enko
    Все, увидел — вы про наследование «CBaseUrlRule».
    Нет, в Sinatra такого нет.
    Ответ написан
  • Custom routes в Sinatra (Padrino)?

    AMar4enko
    @AMar4enko
    Вам просто хелпер для вьюх нужно написать, что-то типа article_url_for.
    В Sinatra это можно сделать как-то так:
    helpers do
      def article_url_for(id)
        # тут уже напишете выборку объекта из базы или кэша и формирование url
      end
    end


    В Sinatra нет генератора url, потому что там контроллеры как таковые отсутствуют. Т.е. если у вас в Yii есть роуты вида
    '/<categoryName:\\w+>/<articleSlug:\\w+>' => "articles/read" 
    '/<id:\\d+>' => "articles/read"


    то вы можете написать экшн в виде
    function actionRead(id = null, categoryName = null, articleSlug = null){
        if(!empty(id))
               article = Article::model()->findByPk(id)
        else
               article = Article::model()->findByAttributes(..)
    }
    

    И генерировать урлы:
    $this->createUrl('articles/read', array('categoryName' => 'Books', 'slug' => 'Another-great-book')) //сгенерирует url первого вида 
    $this->createUrl('articles/read', array('id' => 123)) //сгенерирует url второго вида
    


    Для того, чтобы генерировать url первого вида, передавая id объекта, вам в Yii все равно придется писать хелпер, который вытащит объект из базы и сгенерирует url стандартным способом, передав туда соотв. параметры.
    Ответ написан
    Комментировать