15 Янв

Проблема с bootstrap в продакшене RoR

После установки на рельсы bootstrap из вот этого репозитория столкнулся с проблемой, что не подгружаются ассеты при развертывании приложения в продакшен. То есть css и js просто не подгружаются. Совсем.
Версия руби: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

Версия рельс: Rails 4.2.5

В итоге наткнулся на stackoverflow на тему с такой же проблемой, где советуют сделать прописать следующие параметры в файле %rails_app%/config/environments/production.rb

config.assets.compile = true
config.assets.precompile = ['*.js', '*.css', '*.css.erb']

Ну я и прописал. Но, как обычно, ничего никогда не проходит гладко. Поэтому после этого у меня выскочила ошибка:
Undefined variable: "$alert-padding".
Немного погуглив, нашел решение, что строку

config.assets.precompile = ['*.js', '*.css', '*.css.erb']

всё же лучше убрать, оставив только

config.assets.compile = true

Ну и после этого всё нормально заработало (пока что). Впрочем, сейчас всё равно пока переключусь на development.

12 Ноя

Подключение к БД MSSQL через ActiveRecord

В общем, понадобилось мне в одном проектике подключаться к двум базам данных одновременно. Причём одна из них должна быть локальная MySQL, а вторая удалённая MSSQL. Информации по этой теме нетак уж и много, особенно на русском языке, поэтому я запишу сюда себе всё ж.

В общем, сначала я столкнулся с проблемой несостыковки кодировок в MySQL. Если заношу данные в базу (и считываю их потом оттуда) на английском языке — то всё нормич, а вот как только дело доходит до русского — приложение Sinatra сразу вылетает с ошибкой. Текст ошибки я сейчас уже не помню, но гугление помогло мне и в итоге я нашел инфу, что для подключения к MySQL необходим адаптер не mysql, как могло сначала показаться, а mysql2. Да не просто mysql2, а ещё и определенной версии. В общем, в моём приложении Gemfile стал выглядеть вот так:

 gem "sinatra"
 gem 'mysql2', '~> 0.3.18'
 gem "activerecord"
 gem "sinatra-activerecord"
 gem "sinatra-contrib"

Далее передо мной возникла проблема подключения к базе MSSQL, в общем, с горем пополам тоже нашел инфу, что для подключения к MSSQL нужны ещё два гема. В итоге Gemfile пополнился ещё двумя строчками:

gem 'tiny_tds'
gem 'activerecord-sqlserver-adapter', '~> 4.2.0'

Читать далее

12 Ноя

Соединение с несколькими БД с использованием ActiveRecord

В общем, с Ruby у меня пошло как-то получше, чем ранее с python’ом и фреймворком Yii2.
Смотрю тут всякие видеоуроки, читаю книги, уже немного фигачу всякие мелочи с использованием Sinatra и ActiveRecord.
Вот понадобилось тут из одного приложения создавать подключения к нескольким базам данных. Искал всякие варианты — ничего толком не нашел. Там вроде можно как-то конфиги указывать в database.yml, но у меня не получилось. Зато получилось вот так:
для начал нам потребуется собственно сам activerecord

в файле app.rb — основной файл приложения Sinatra, — прописываем следующее:

require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'

ActiveRecord::Base.configurations["mysql1"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "databasename",
:encoding => "utf8"
}

ActiveRecord::Base.configurations["mysql2"] = {
:adapter => "mysql2",
:host => "localhost",
:username => "username",
:password => "userpassword",
:database => "oher_databasename",
:encoding => "utf8"
}

А далее в коде при создании класса с нашей моделью прописываем вот так:

class Table1 < ActiveRecord::Base
establish_connection "mysql1"
end

class Table2 < ActiveRecord::Base
establish_connection "mysql2"
end

Вот и всё. После этого у меня приложение заработало нормально.

Немного позже напишу ещё о том, как подключиться к базе MSSQL из синатры (если, конечно, получится).