Задать вопрос
  • Как организовать код в Ruby on Rails на отдельные модули?

    bondarenko
    @bondarenko
    Spacewalker
    Попробуйте присмотреться к Rails Engine (rusrails.ru/engines)
    Тот модуль (читай функциональную часть приложения) который вы напишете можно оформить как gem, а можно просто подключать из папки.
    Подключение приложения заключается во включении его в Gemfile, монтировании приложения в routes.rb и запуске миграций.
    Скорее всего это именно то что вам нужно.
    Ответ написан
    1 комментарий
  • В чем могут помочь js фреймворки(React, Angular)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    C MVC фреймворками все понятно, но они меня не интересуют. А что делать с инструментами, нацеленными больше на фронтенд (React, Angular) ?


    Открою вам страшную тайну - MVC фреймворки как раз на фронтэнд и нацелены, а не на бэкэнд.

    ReactJS - библиотека, а не фреймворк. Это вопервых. И решает эта библиотека задачу оптимизации взаимодействия с DOM при связывании данных между представлением и моделью данных.

    Angular - полноценный фреймворк, к которому можно подключить тот же React для вьюх. Используют его в основном при реализации Single Page Application-ов.

    Были ли у вас практические задачи, с которыми мог справиться только js фреймворк? Какие?

    Все задачи можно решить на чем угодно. Вопрос в сроках и кривости. Angular позволяет организовать структуру приложения, разделить его на слои, предоставляет ViewModel... все то что писать с нуля маленький ад и скучно. Ну и опять же все можно покрыть тестами и т.д.

    Могут ли быть полезны данные инструменты в совместной работе с Rails, например?

    Если брать ангуляр - я его использую только в контексте SPA. Это может быть не все приложение а только какая-то его часть но все же... А для SPA разницы нет вообще на чем бэкэнд реализован. От бэкэнда нужна только апишка.

    Реакт же можно использовать в принципе для построения view на клиенте. Так что можно и его юзать. Зависит от задачи. Скажем если в задачи входит организация работы жирной формы - то лучше взять knockout.js. А если вам нужно рендрить какие-то данные в реалтайме - можно вооружиться реактом.

    Нужно ли вообще тратить время и искать себе задачи, которые можно решить привычным jQuery, который в большей степени знают все (вопрос дальнейшей поддержки) ?

    Куча народу знает jQuery но не знает JS. И это грусть и печаль. Скорее всего если у вас в задачах стоит реализовать слайдер какой или что-то такое то ни Angular ни React вам не нужны. Ну или в контексте сайтиков тоже не особо есть от них польза (только в специфических случаях). А вот если пишите приложения какие-то, можно уже задуматься ибо если вам придется реализовывать весь бойлерплейт, да еще и не будет DI то с высокой долей вероятности (все же нормальные разработчики существуют) вы получите шматок гуано дико связанный и приносящий боль при рефакторинге. А еще использование только jQuery это на 99% отсутствие каких-либо тестов на фронтэнде.

    p.s. Я на ангуляре пишу админки к примеру для своих проектов. Ну и все все все что вписывается в концепцию SPA. Реакт планирую использовать как альтернативу phonegap (react-native вышел), поскольку он является слоем абстракции над формированием представления (за счет промежуточного виртуального DOM).
    Ответ написан
    1 комментарий
  • Как распределить время при обучении программированию?

    God-emperor
    @God-emperor
    create a golden path
    1) Алгоритмы + база языка
    Вы изучаете/пишите реализацию алгоритмов, тем самым осваивая базовый синтаксис языка.
    2) Определяете 2-3 более обширные задачки на бизнес-логику, решаете их с помощью базовых средств вашего основного языка (Учим язык на продвинутом уровне)
    3) Решаем данные задачи с помощью парочки фреймворков, сравниваем.
    4) Дальше в любом порядке (параллельно или последовательно тоже не важно) изучаете оставшийся материал, который вас интересует на ваших же примерах. Т.е. доделываете, переделываете и т.д.

    Так бы сделал я. Читать что-то абсолютно абстрактно - бессмысленно. Поверьте, я пробовал. Так же пробовал в омут с головой в практику, как тут предлагают - тоже бессмысленно. Мне помог именно такой стиль изучения.
    Ответ написан
    Комментировать
  • Как распределить время при обучении программированию?

    @suslik2015
    Современное прикладное и веб программирование низового уровня - типичное рутинное ремесло. И как в любом ремесле самое ценное -опыт. В своей работе программист использует большое количество инструментов - ide, редакторы, дебагеры, сборщики, svn и т.д. Программисту нужны навыки чтения кода, юнит тестирования, использования актуальных фреймворков и api, знания протоколов, форматов хранения и передачи данных, конвенций оформления и документирования кода.
    Получить опыт и развить навыки можно только одним путем - написание кода. Идеально участие в опенсорс проектах или что-то свое. Сначала будет говнокод - это факт. Clean code, по терминологии упоминаемого вами Мартина Р. , приходит с опытом работы в проектах, в постоянном сравнении и оптимизации того или иного кода, тех или иных практик.
    Ответ написан
    Комментировать
  • Чем заменить тернарный оператор?

    viktorvsk
    @viktorvsk
    @supply.supplier.margin || 0
    Даст не то, что вы хотите, когда margin будет равняться "" (что будет, если меняете через форму на пустое значение)

    Для этого в Rails сделали метод
    presence
    margin = @supply.supplier.margin.presence || 0

    Что эквивалентно:
    margin = @supply.supplier.margin.present? ? @supply.supplier.margin : 0


    present? лучше проверяет пустые значения, чем неявное приведение типов
    Ответ написан
    1 комментарий
  • PHP+Symfony или Ruby+RoR?

    viktorvsk
    @viktorvsk
    Для обучения у руби и рельс, на мой взгляд, есть неоспоримый плюс.
    Вот то, что называют порогом входа (я, признаться, не особо понимаю это), мне кажется, играет злую штуку. Например, на руби и рельсах Вы не сможете за 2 часа сделать сайт-визитку, отдать ее заказчику, получить деньги и расслабиться, считая себя крутым разработчиком.

    Для того, что бы довести дело до конца, на руби и рельсах нужно будем познакомиться со множеством сопутствующих технологий.

    Например, что бы начать с ним работать вообще - нужны *nix. Можно, конечно, продолжать юзать виндовс, но пользоваться виртуальными машинами, но это тоже - шаг вперед перед пхп с его денвером и т.д.

    Далее, что б установить интерпретатор, в 95% случаев вы поставите менеджер версий языка (rvm или rbenv), что уже много лучше, чем глобальная установка.

    Что бы запустить свой первый проект, Вам понадобится менеджер пакетов - что лучше, чем качать zip архивы и распаковывать в нужную директорию.

    Что б скачать некоторые пакеты, нужен будет гит, что само по себе очень круто.

    Когда будете выполнять какие-то учебные задания, Вам на выбор дадут познакомиться, как минимум, с тремя базами сразу, а не ограничиться одним мускулем.

    Итак, теперь вы приступили к созданию сайта-визитки, обладая уже неплохим багажом знаний для начала.

    Вот вы ее сделали, используюя архитектуру рельс и хоть какое-то понимание раздления кода, роутинга, хелперов и т.д.

    Дальше, нужно ж как-то показать заказчику результат? Самым первым вариантом, скорее всего, вы познакомитесь с Хероку - PaaS сервис вещь тоже довольно полезная.

    Но вскоре вы поймете, что он вас не очень устраивает. И попробуете разместить сайт-визитку на хостинге.

    Здесь Вам придется познакомиться с ВПС, базовой настройкой линукса, юникс-сокетами, понятиями работы различных веб-серверов

    Но вот Вы настроили свой сервер. Надо залить туда свой код. В руби Вам будет очень сложно пойти путем "использования ФТП плагинов в редакторе кода" - как-никак, а придется познакомиться с техниками нормального деплоя.

    Выглядит сложновато для начала, но зато Вы сразу познакомитесь со всем современным стеком технологий, которые очень сильно облегчает жизнь.

    Безусловно, весь этот процесс можно проводить на любом языке - где-то чуть проще, где-то чуть лучше. Но если в пхп можно обойтись без этого и долгое время даже не представлять, что можно деплоить код безопасно, с автоматическим откатом назад, если что-то пошло не так, да еще и с нулевым даунтаймом, то в руби вам придется сделать это сразу.
    Ответ написан
    4 комментария
  • Какие есть админки для Ruby on Rails?

    viktorvsk
    @viktorvsk
    Начнем с того, что рельсы не для сайтов-визиток.

    activeadmin.info - самая гибкая и, наверное, самая популярная. Из коробки не админится ничего (никакие модели). Добавляем вручную модели и аттрибуты, которые хотим админить.
    https://github.com/sferik/rails_admin - противоположна первой. Тут сразу есть админа под все существующие модели. И идем путем вычитания.
    https://github.com/typus/typus - Вроде как аналог рейлс-админа
    https://github.com/thoughtbot/high_voltage - удобная штука для статических страниц (типа. О нас, История, Команда ... )
    https://github.com/comfy/comfortable-mexican-sofa - простенькая CMS. Вроде как, достаточно популярна. Поддерживается и сейчас. Работает с 4 рельсами.
    refinerycms.com - наверное,самая популярная (и возможно, единственная) CMS для рельс. Вроде как, не работает с 4мы, насколько я помню.

    А вообще, есть такой замечатнльный ресурс - https://www.ruby-toolbox.com/
    И в нем, к примеру, есть такой раздел - https://www.ruby-toolbox.com/categories/rails_admi...

    P.S. сторонние модули подключаются с помощью Bundler через Gemfile. Трогать исходники (модули, гем, библиотеки) - нельзя.

    Если вы хотите "быстро подправить" что-то кому-то в левом сайте-визитке на рельсах, имея опыт, например, в пхп и джумле - готовьтесь сразу к серьезным испытаниям :)
    Ответ написан
    5 комментариев
  • Есть ли перспектива у Ruby(RoR)?

    dmitry-polushkin
    @dmitry-polushkin
    Инженер программного обеспечения
    Глупо учить язык программирования, а не техники программирования (ФП, ОПП, рефакторинг, хайлоад, БД, алгоритмы, структуры данных и т.д.).

    Год назад я бы сказал, что у руби нет будущего (имею 7 лет опыта в Ruby on Rails), теперь я думаю, что на следующие 3-5 лет определённо запас мощности есть. Однако, вы всё же задумайтесь о том, что бы учить методы и техники, паттерны и способы взаимодействия с людьми через ЯП, а не сам ЯП. ЯП и фреймворк легко выучить, легко так же получить опыт, если действительно заинтересоваться. Куда легче всё это понять и выучить, когда ты понимаешь технологию. Да и в конце концов, можно и самому стать архитектором фреймворка и языка - тогда уж точно получите массу опыта и станете действительно сильным программистом.
    Ответ написан
    Комментировать
  • Есть ли перспектива у Ruby(RoR)?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Нет перспектив, учите Питон.
    Ответ написан
    4 комментария
  • Каким должен быть собственный проект для устройства на работу?

    Basters
    @Basters
    Кокер-спаниель
    Лучше всего ты продемонстрируешь свои умения непосредственно на месте работы! Выбираешь подходящую организацию с подходящим размером ЗП на испытательный срок. На испытательном сроке ты работаешь в реальной команде с реальными задачами, растешь сам и если тимлид и другие члены увидят твое стремление, то ЗП после испытательного срока обязательно повысится! Этот момент так же можно обсудить как условие при устройстве на работу. Хватит заниматься домо-дрочерством и делать никому не нужные вещи! Вы нужны командам! Rails программистов не хватает!
    Ответ написан
    7 комментариев
  • Как сделать короткий путь http://localhost:3000/danil вместо http://localhost:3000/users/danil Использую гем friendly_id и Devise?

    Freika
    @Freika
    Senior Ruby on Rails developer
    Сергей Краснодемский подсказал неплохо, но это не rails way. Чтобы избавиться от имени модели в урле для RESTful-ресурса необходимо указать "нулевой" путь:
    resources :users, path: ''
    Ответ написан
    Комментировать
  • Amazon s3 + carrierwave. Проблема загрузки фото с включенным resize? Как решить?

    YourWest
    @YourWest
    Ruby Developer
    Ошибки какие-нибудь есть?
    Скорее всего не установлен ImageMagick на сервере.
    Ответ написан
    2 комментария
  • Как реализовать мультипоточность на сайте?

    viktorvsk
    @viktorvsk
    Для начала - очереди, resque, delayed job, sidekiq
    Ответ написан
    Комментировать
  • На каких языках лучше написать сайт для турфирмы (нужно чтобы было фильтры поиска, чтобы использовалась статистика и аналитика)?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    На любом. Глупый вопрос.
    Ответ написан
    Комментировать
  • Ruby or Python?

    "Лучше" зависит от ответа на вапрос "А вам для чего?", "легче" зависти от опыта и личных качеств. На обоих ЯП можно создавать всё.
    По существу: Языки сравнимой мощности. Однако Питон более распространён и применяется в более широком спектре задач, Рубин в свою очередь более силён в сфере вёба.
    Рубин тяготеет к магии (вещи просто работают, не важно как, "соглашения над конфигурацией"), Питон -- к строгости и предсказуемости.
    Мне лично больше нравится Рубин. Субъективно -- красивее, человечнее. Кроме того на РУбине написаны Рельсы )))
    Питон ничуть не хуже -- просто другой.
    Короче: если нет контекста, то кому что нравится....
    Ответ написан
    1 комментарий
  • На чем писать бекенд?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Все просто. В чем лучше разбираетесь, на том и пишите.
    Ответ написан
    Комментировать
  • Как вывести данные методами связки has_many belongs_to?

    kirillplatonov
    @kirillplatonov
    Ruby on Rails developer
    <% @users.each do |user| %>
      <% user.tests.each do |f| %> 
        <%= f.title %>
      <% end %>
    <% end %>


    <% something %> - исполняет руби код
    <%= something %> - выводит результат

    Прочтите это:
    stackoverflow.com/questions/7996695/what-is-the-di...
    Ответ написан
    1 комментарий
  • "Красные глаза программиста" - как бороться, профилактика?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    1) Хороший качественный монитор/мониторы, если несколько одной фирмы и серии.
    2) Настройка яркости оптимальной для внешнего освещения и времени суток, например очень радует программка f.lux
    3) Звук начала нового часа, булькнуло, отвлекся чуток подумал походил вокруг глаза то вдаль то вблизь, простая зарядка в общем.
    4) Подбор комфортного освещения вокруг.
    5) Регулярный сон и прогулки на свежем воздухе, даже если срочно и аврал - это конечо идеал, но стремиться надо.

    Очки для мониторов - плацебо, капли вредны для регулярного применения, 1-2 раза в месяц норм, часто - делают еще хуже, можно проконсультироваться у любого офтальмолога.
    Ответ написан
    Комментировать
  • Как вывести всех пользователей онлайн Ruby on Rails?

    kirillplatonov
    @kirillplatonov
    Ruby on Rails developer
    # app/controllers/application.rb
    after_action :user_activity
    
    private
    
    def user_activity
      current_user.try :touch
    end

    # app/models/user.rb
    ONLINE_PERIOD = 5.minutes
    
    scope :online, -> { where('updated_at > ?', ONLINE_PERIOD.ago) }
    
    def online?
      updated_at > ONLINE_PERIOD.ago
    end

    Использование:
    User.online # все пользователи онлайн
    Ответ написан
    2 комментария