Рельсы знамениты своим правилом «соглашения преобладают над конфигурацией» (Convention over Сonfiguration). Однако иногда, очень редко, некоторые вещи приходится делать по-другому. Одним из таких случаев я хочу поделиться в статье. Расскажу, как сделать свой первичный ключ в таблице (использую Rails 4.2.0). Ничего сложного, по сути, но вопросы о том, как это сделать, время от времени задают, а ответы не всегда хорошие.
Читать полностью »
Рубрика «ruby on rails» - 17
Переопределяем первичный ключ в Ruby on Rails
2015-03-18 в 14:00, admin, рубрики: primary key, rails, ruby on rails, все читают теги, первичный ключ, метки: primary key, первичный ключSemaphore App. Ruby on Rails. Continuous Integration-Delivery
2015-03-18 в 12:08, admin, рубрики: continuous delivery, continuous integration, heroku, hipchat, rails, ruby on rails, semaphoreapp, slack, разработкаПредисловие
Побегав по Хабру, я на удивление не нашел ни одной статьи про полноценный team workflow с использованием различных магических причуд в духе Continuous Integration & Continuous delivery, различные интеграции Github — HipChat(Slack) — CI — Staging and Production via Continuous Delivery, и прочего, хотя я может просто искать не умею.
Но все же, мне захотелось поделиться своим, хоть и небольшим опытом работы, рассказать о различных плюшках, которые облегчают жизнь команде, работающей над одним проектом вместе, как это все можно объединить в одну отлаженную систему и сократить количество неприятных ощущений в нижней части спины во время работы над проектом.
Итак, под катом — разбор CI сервиса SemaphoreApp, немножко про интеграцию с другими сервисами и прочие радости, которые упрощают нам жизнь.
Читать полностью »
Прощай, MongoDB, здравствуй, PostgreSQL
2015-03-14 в 17:04, admin, рубрики: mongodb, mysql, olery, postgresql, ruby on rails, Веб-разработка, миграция, реляционные бдНаш стартап Olery был основан почти 5 лет назад. Мы начали с единственного продукта, Olery Reputation, который был создан агентством, занимавшимся разработкой на Ruby. Всё это выросло в набор различных продуктов. Сегодня у нас есть ещё Olery Feedback, API для Hotel Review Data, виджеты для вставки на сайты и многое другое.
Всего у нас работает 25 приложений (все на Ruby) – некоторые из них в вебе (Rails или Sinatra), но в основном это фоновые приложения для обработки данных.
Хотя нам есть, чем гордиться, есть у нас одна проблема, которая всё время висела где-то в фоне – база данных. Изначально мы использовали MySQL для важных данных (пользователи, контракты, и т.д.) и MongoDB для хранения обзоров и других данных, которые легко можно было бы восстановить в случае утери. Сначала всё работало неплохо, но по мере роста мы начали испытывать проблемы, в особенности с MongoDB. Некоторые из них возникали в сфере взаимодействия БД с приложениями, некоторые – непосредственно у самой БД.
К примеру, в какой-то момент нам надо было удалить миллион документов из MongoDB, а позже вставить. В результате работа базы застопорилась на несколько часов. Потом нам пришлось запускать repairDatabase. И сама починка тоже заняла несколько часов.
Читать полностью »
Туториал по Coub API
2015-03-13 в 11:52, admin, рубрики: api, coub, ffmpeg, http, oauth, oauth 2.0, ruby, ruby on rails, авторизация, Блог компании Coub, Программирование, Работа с видеоНа днях мы выпустили Coub API. Теперь можно делать приложения, смотреть ленту, лайкать, рекобить, то есть практически все, что можно сделать на сайте, можно делать через API. Но самое главное — теперь можно из сторонних приложений через API создавать кобы.
В этом туториале я покажу, как можно сделать простейший клиент коба на Ruby on Rails. Приложение позволяет залогиниться через коб и сгенерить такой коб с любым текстом:
Рабочая версия этого приложения лежит по адресу fantozzi.dev2.workisfun.ru, код приложения из этого туториала можно посмотреть на Гитхабе: github.com/igorgladkoborodov/memegenerator
Читать полностью »
Зачем нам не нужен virtualenv и rvm
2015-03-13 в 8:04, admin, рубрики: CentOS, djangocms, pyenv, python, quokka, rbenv, redmine, refinerycms, ruby, ruby on rails, метки: pyenv
Я люблю, когда все лежит на своих местах, все в чистоте и порядке.
Поэтому раз в квартал разгребаю творческий беспорядок. ®
Для меня важно иметь стабильную ОС с уверенностью в том, что после очередного ежедневного обновления ничего не сломается. Многие разработчики выбирают ОС исходя из наличия актуальных версий софта. Я умею готовить Centos и в "yum -y install yum-cron" уверен на 99.98%.
Расскажу, как при этом можно использовать последние версии ruby и python для web-разработки. Так же по результатам на сервере будут установлены 4 веб-приложения от одного регулярного пользователя: djangocms (python 3.4.3 ), quokka (python 2.7.9 ), redmine (ruby 2.2.1 ), refinerycms (ruby 2.0.0). На тонкие параметры запуска приложения внимание обращено не будет (выбор БД, количество веркеров, соединений, логи и т.д.). Хотел описать LocomotiveCMS, но оно оказалось паровозом с кучей ручных правок для сетапа.
Для комфорта и удобства будем использовать панель управления VestaCP. Потому что она просто великолепна и идеологически родная.
Читать полностью »
Vesta CP: установка веб-приложений на Ruby и Python
2015-03-13 в 8:04, admin, рубрики: CentOS, djangocms, pyenv, python, quokka, rbenv, redmine, refinerycms, ruby, ruby on rails
Я люблю, когда все лежит на своих местах, все в чистоте и порядке.
Поэтому раз в квартал разгребаю творческий беспорядок. ®
Для меня важно иметь стабильную ОС с уверенностью в том, что после очередного ежедневного обновления ничего не сломается. Многие разработчики выбирают ОС исходя из наличия актуальных версий софта. Я умею готовить Centos и в "yum -y install yum-cron" уверен на 99.98%.
Расскажу, как при этом можно использовать последние версии ruby и python для web-разработки. Так же по результатам на сервере будут установлены 4 веб-приложения от одного регулярного пользователя: djangocms (python 3.4.3 ), quokka (python 2.7.9 ), redmine (ruby 2.2.1 ), refinerycms (ruby 2.0.0). На тонкие параметры запуска приложения внимание обращено не будет (выбор БД, количество веркеров, соединений, логи и т.д.). Хотел описать LocomotiveCMS, но оно оказалось паровозом с кучей ручных правок для сетапа.
Для комфорта и удобства будем использовать панель управления VestaCP. Потому что она просто великолепна и идеологически родная.
Читать полностью »
На Cousera открыта запись на курсы по веб-разработке на Ruby on Rails «Web Application Architectures»
2015-03-02 в 11:44, admin, рубрики: coursera, ruby, ruby on rails, веб-приложения, курсы, Программирование, разработка Периодически я заходил на курсеру посмотреть доступны ли там какие-нибудь прикладные курсы. Было банально интересно, промелькнёт ли какой-нибудь лучик света за суровой теорией. Смотрел по языкам программирования, по управлению проектами, по аналитике. А сегодня увидел курс, информацией о котором и захотелось поделиться.
Его название в заголовке, а перевод описания ниже, а пока пару слов, почему я считаю, что он полезен всем:
- Новичкам можно изучить новую для них технологию или подтянуть ещё не укрепившиеся знания.
- Гуру-рельсовикам можно заработать Verified Certificate и тем самым подтвердить свои знания для общественности. Например, его можно прикрепить в LinkedIn или указывать в откликах на фрилансе
Новый взгляд на хранение файлов и ссылок
2015-03-02 в 8:32, admin, рубрики: AWS, mysql, ruby on rails, staply, Блог компании Staply, веб-дизайн, Веб-разработка, заметки, интерфейсы, разработкаПривет! Сегодня мы хотим кратко представить вам проект над которым мы работали последние 10 месяцев. Нас в команде 4 человека и мы, используя ruby и js, создали Staply — приложение, где удобно работать вместе и хранить всё, что угодно.
Предисловие
На текущий момент существует огромное количество приложений для хранения и обмена данными:Читать полностью »
Опасности использования open-uri
2015-03-01 в 14:58, admin, рубрики: rails, ruby, ruby on rails, информационная безопасностьOpenURI в руби это стандартная библиотека сильно упрощающая работу с URL так как она объеденяет в себе Net:HTTP/HTTPS/FTP и представляет из себя всего лишь метод open. Насколько я знаю это самый популярный способ для скачивания файла, GET запроса или чтения данных.
Но на деле require "open-uri"
патчит Kernel.open и вызывает разный код для разных аргументов, что может привести к удаленному выполнению кода или чтению любого файла на сервере!
open(params[:url])
это выполнение кода для url=|ls
Все что начинается с | рассматривается как системный вызов.
open(params[:url]) if params[:url] =~ /^http://
не лучше для url=|touch n;nhttp://url.com
(сломанные регулярки могут привести к RCE, используйте Az).
Читать полностью »
TheRole 3. Авторизация для Ruby on Rails
2015-02-24 в 19:56, admin, рубрики: acl, bye bye cacan, gem, open source, php, ruby, ruby on railsTheRole — гем для организации ролевого распределения на RoR сайте (с панелью управления)
tl;dr
Еще один (1001-ый) способ обеспечить разграничение прав в web-приложении. Концепт данного решения был довольно давно реализован на PHP, и позже был переписан на ruby. Ввиду простоты реализации описанный подход может быть применим в любом MVC фреймворке вроде Rails, Laravel и.т.д.
В тексте я попытался подробно раскрыть, не только техническую интеграцию решения в приложение, но и причины предлагаемой реализации.
Читать полностью »