Ruby: delete hash element

Example:

 

simple form та checkbox без label

В одному проекті деяка модель мала асоціативний зв'язок has_and_belongs_to_many з моделею lot

Потрібно було вивести у форму checkbox використовуючи simple_form.

Для has_and_belongs_to_many документація радить використовувати метод association

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

Проблему вирішив наступним чином

 

select2 для select отриманого у відповіль на AJAX-запит

Завів окремий клас filter_select для селектів, які мають бути select2

Проблема виникла, коли я селект із цим класом отримую як відповідь на ajax-запит. В результаті маємо select із класом select2, але функціонал не діє, використати document on не можем, так як дії немає

Вирішив проблему наступним чином

 

Як інтегрувати ckeditor в active admin на Ruby on Rails

Маємо app з active_admin, в який необхідно інтегрувати ckeditor

1. Gemfile

Виконуємо в консолі

2. Добавити в /config/initializers/active_admin.rb

3. Для потрібного поля у в'юшці добавляємо :as => :ckeditor

4. Для коректного відображення редактору, добавляємо стиль у app/assets/stylesheets/active_admin.css.scss

5. Також потрібно задати custom toolbar, Створюємо /assets/javascripts/ckeditor/config.js

та підключаємо його у assets/javascripts/active_admin.js

Джерела:

  1. How to add ckeditor to active admin on Rails
  2. Ckeditor integration gem for Active Admin

Робоче середовище Ruby програміста (стара версія)

Для плідної роботи Ruby-програміста, одного знання мови програмування не є достатнім. Потрібно мати ПК, встановлену ОС Linux та налаштоване середовище. Якщо ви працюєте за одним робочим місцем, то тут все досить просто – інсталюємо, налаштовуємо. Мені часто приходиться працювати за різними ПК, варіант на кожному ПК ставити Linux відпадає одразу, також налаштування середовища можливе, але затратно по часу. Тому я вибрав варіант віддаленого робочого столу.

Віддалений робочий стіл на X2Go

Інсталюємо у віртуальну машину(VPS) Linux, в якості ОС мій вибір зупинився на Xubuntu – офіційний варіант дистрибутиву Ubuntu, котрий в якості робочого середовища використовує xfce. Згідно wikipedia Xubuntu призначено для малопотужних комп'ютерів, або для тих, хто бажає отримати більшу швидкодію і використовує здебільшого застосунки GTK+.

Після успішної інсталяції Xubuntu у VPS, потрібно вирішити питання із доступом до нашого майбутнього робочого середовища. Я зупинився на  X2Goopensource продукт, який вокористовує NX tehnology протокол, безпеку з'єднання забезпечує ssh (тобто, для підключення до віддаленого робочого столу, якшо ваш VPS є за NAT'ом, доствтньо прокинути 22 порт, і все)

Інсталюємо x2go

Далі інсталюємо X2Go клієнт, який доступний для Linux/Windows та підключаємось до нашого віддаленого столу.

Проблеми:

  • На жаль, в X2Go я не зміг коректно налаштувати компресію трафіка, тому скролінг сторінки у веб-браузері та у Sublime працював із дуже помітною затримкою після деякого часу роботи.
  • Зміна розкладки клавіатури – можливо я не до розібрвся, але забіндити переключення за комбінацією клавіш вдалося, але при кожному новому конекті після відключення, воно не працює, приходиться дьоргати в ручну, потім баіндінг починає працюватия ….

Віддалений робочий стіл на XRDP

Враховуючи незначні проблеми при використанні X2Go я запинився на XRDP (windows має штатний клієнт для цього протоколу: mstsc).У VPS я інсталював Linux Mint та інсталював xrdp згідно цієї інструкції. Інсталювавши  скрипт xrdp версії 1.7.1, яка усуває проблему із переключення layout клавіатури ми отримуємо все той же добрий Linux на основі Ubuntu

Linux Mint поширується в чотирьох редакціяк, які відрізняються робочими середовищами:

  • Cinnamon desktop
  • MATE desktop
  • Xfce desktop
  • KDE desktop

KDE я відкинув зразу, MATE я довгий час використовував, поки дещо не пішло не так і я не зміг дати раду, тому експерементувати знову не став. Після інсталяції Cinnamon я банально не зміг запустити термінал. Перший лінк в гуглі веден на аналогічну проблему, рішення якого мені не допомогло. Тому знову добрий Xfce :). Доречі, раджу інсталювати саме 64-х бітну ОС, оскільки ви не зможете інсталювати той же Viber, Slack, на момент написання цих рядків програм для 32-х бітно ОС Linux не існує

Налаштовуємо локаль

База даних (PostgresSql)

Інсталяція

Налаштування аутентифікації знаходятся у файлі /etc/postgresql/9.3/main/pg_hba.conf

Цей рядок говорить про те, що користувач Postgres може підключатися до будь-якій базі даних локальної СУБД PostgreSQL через сокет(налаштування за змовчанням). Пароль при цьому вводити не потрібно, операційна система передасть ім'я користувача, і воно буде використано для аутентифікації.

Підключення до БД:

Щоб мати можливість підключатися по мережі, потрібно в pg_hdba.conf додати рядок:

Також редагуємо рядок до такого виду

що дасть можливість локально підключатися по логіну та паролю

Метод аутентифікації MD5 означає, що для підключення доведеться ввести пароль.

Створення нового користувача PostgreSQL

Створення бази даних з PostgreSQL

Налаштування прав доступу до бази даних

Якщо користувач є власником (owner) бази даних, то у нього є всі права. Але якщо ви хочете дати доступ іншому користувачеві, то зробити це можна за допомогою команди GRANT. Запит нижче дозволить користувачеві підключатися до бази даних. Але не забувайте про конфігураційному файлі pg_hba.conf, в ньому теж повинні бути відповідні дозволи на підключення.

Dump/Restore

Виконання дампу БД mybd у файл

Виконання restore

PgAdmin

Інсталяція менеджера PostgreSQL'я

шкода що немає EMS manager'а під Linux, кращого я не бачив

У мене є проекти на MySql, тому інсталюємо:

Інсталюємо Ruby за допомою rbenv

(один проект працював )

Взагалі я завжди використовував RVM для інсталяції ruby, але один проект працював на ruby 2.3.1, а на дефаултному 2.4.0 були деякі проблеми. Команда rbenv locale 2.3.1 в каталозі з проектом задіює  ruby 2.3.1 – мені це здалося досить зручним, і я перейшов на rbenv так би мовити

Для зручності добавляємо аліаси команд в ~/.bashrc

Добавляємо можливість бачити назву текучого branch'у в запрошені консолі

 

Інсталюємо Sublime text 3

Взагалі я юзав другу версію, яка в принципі різниця, але побачив мега круту штуку. Підводиш мишку до метода, вивалюється підказка, в яких вайлах цей метод описаний (нажаль заскрінтошити не можу), поставив третю версію

Корисні налаштування Sublime text 3

Біндимо комбінацію alt+shift+r для форматування коду

Preferences -> Key Bindings – Default

Два пробіля замість табуляції

Preferences → Settings User
{

Корисні інструменти

wwwsqldesigner прототипування БД

Cacoo онлайнінструменту для створення прототипу інтерфейсу

ScreenCloud

Sqliteman

PostgreSQL & Rails – зміна типу поля із string у integer

 

Міграція даних із SQLite3 в PostgreSQL у Rails

Часто, починаючи новий проект, в якості бази даних ми обираємо запропоновану нам за змовчанням SQLite. Звісно, вона має право на життя, але я б радив зразу використовувати PostgreSQL. SQLite заманює відсутністю необхідності інсталювати щось додаткового. Але приходить час деплою і нам потрібний PostgreSQL, та й дані, які ми внесли під час development'у часто/густо потрібно перенести.

 

Continue reading