Как использовать Rails Composer и postgreSQL на Cloud9 и развернуть на Heroku
Процесс использования Rails Composer для создания приложения rails с использованием postgreSQL на Cloud9 и развертывания на Heroku чреват предупреждениями и ошибками, которые могут запутать нового разработчика. Существуют ли инструкции, которые могут помочь мне пройти через процесс и развернуть мое стартовое приложение?
1 ответ
Я верю в состав rails composer, cloud9 и heroku, а также в рекомендованную последней базу данных postgreSQL, хотя их совместное использование содержит много мелких деталей, которые ни один источник не объясняет, как обойти. Проведя много ночей, работая над этим, я создал следующий список инструкций, который работает на дату и время публикации.
- Создать новое рабочее пространство на облаке9
Настройте базу данных postgreSQL в своей рабочей области:
$ sudo service postgresql start
$ sudo sudo -u postgres psql
postgres = # СОЗДАТЬ ИМЯ ПОЛЬЗОВАТЕЛЯ ПАРОЛЬ СУПЕРУЗЕРА 'пароль';
СОЗДАТЬ РОЛЬ
postgres=# \q
Выберите название приложения, которое доступно на heroku, так как оно либо есть у вас, либо еще доступно на heroku. Вы можете проверить доступность, посетив [потенциальное доменное имя].herokuapp.com
$ mkdir ["your app's directory/domain name"]
$ cd ["your app's directory/domain name"]
Текущие гемы, используемые Rails Composer, используют версию 2.2.3 ruby, поэтому их необходимо установить в rvm со следующим кодом:
$ rvm install 2.2.3
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
$ rvm use ruby-2.2.3@[your app name] --ruby-version --create
$ gem install rails --no-ri --no-rdoc
Создайте несколько локальных переменных и сохраните в них некоторые значения.
$ echo "export USERNAME=username" >> ~/.profile
$ echo "export PASSWORD=password" >> ~/.profile
Введите доменное имя вашего приложения в качестве локальной переменной среды со следующим кодом в cl:
$ echo "export DOMAIN_NAME=[domain name].herokuapp.com" >> ~/.profile
Затем, devise требует, чтобы в качестве переменной среды был задан сверхдлинный секретный ключ. Как только приложение rails создано, rake может сгенерировать такой секретный ключ, используя $ rake secret
командование по кл. Поскольку мы еще не использовали composer для создания нашего приложения rails, rake не будет работать. Однако мы сделаем то же самое, используя irb и securerandom, как описано Джеймсом Бэджером в его посте в блоге " Создать новый секретный токен для приложений Rails":
$ irb
2.2.3 :001 > require 'securerandom'
=> true
2.2.3 :002 > SecureRandom.hex(64)
=> "137d8b4bf436e670e2eea63372494b84aa25900edb1328eb5c1367f5100fe114fc95313f8772428dbda89ed84086e87a26428ef524951f94fd0375d4e399b613"
2.2.3 :003 > exit
Мы (ты и я) должны использовать другого в производстве.
$ echo "export SECRET_KEY_BASE=137d8b4bf436e670e2eea63372494b84aa25900edb1328eb5c1367f5100fe114fc95313f8772428dbda89ed84086e87a26428ef524951f94fd0375d4e399b613" >> ~/.profile
RESTART TERMINAL, чтобы установить переменные ENV. Если щелкнуть правой кнопкой мыши в терминале и выбрать "перезапустить все терминалы", это будет сделано в облаке9. Перезапуск ваших терминалов может вернуть вас в корневой каталог. Если это так, перейдите в каталог с новым приложением в cl, используя:
$ cd [your app directory]
Теперь вы готовы запустить Rails Composer
$ rails new . -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
Ниже приведены варианты, которые могут быть полезны для вас, хотя ваш выбор может отличаться.
создать приложение для начинающих?: 3 - выбрано для создания пользовательского приложения rails
сервер разработки: 4 - пума
рабочий сервер: 1 - такой же, как разработка
разработка базы данных: 2 - PostgresSQL
шаблонный движок: 2 - Haml
тестовая среда: 2 - rspec с капибарой
непрерывное тестирование: 1 - нет
рамки внешнего интерфейса: 2 - начальная загрузка 3.3
поддержка по электронной почте: 1 - нет
аутентификация: 2 - разработка
модули devise: 1 - разработка с модулями по умолчанию
авторизация: 1 - нет
драгоценный камень строителя формы: 2 - простая форма
Добавьте страницы: 5 - Дом, О нас и Пользователи
Добавить шаблоны страницы Bootstrap? [Вы можете проверить параметры на веб-странице шаблонов startbootstrap.com.]
установить локальный?: [возврат / ничего для английского]
аналитика просмотра страниц: 2 - Google Analytics
сгенерировал идентификатор Google Analytics в Google и ввел его в.
подготовка к развертыванию: 2 - геройку
Отключить Rails Turbolinks?: n
забанить пауков: n
создать репозиторий github: n - планирую использовать bitbucket
добавить гем и файл для переменных среды?: 1
уменьшить шум регистратора активов во время разработки: y
улучшить отчеты об ошибках с 'better_errors' во время разработки? Y
используйте 'pry' в качестве замены консоли во время разработки и тестирования: y
использовать 'rubocop', чтобы убедиться, что ваш код соответствует руководству по стилям Ruby? Y
создать специфичный для проекта гемвсет rvm? Y
Добавить 'therubyracer'? N
[Создание приложения!]
Имя пользователя для PostgreSQL (оставьте пустым, чтобы использовать имя приложения) username # с учетом того, что я ввел выше для создания локальной базы данных pg
Хост для PostgreSQL в database.yml? (оставьте пустым, чтобы использовать сокет по умолчанию) оставьте пустым
пароль # также с учетом того, что я ввел выше, чтобы создать локальную базу данных pg
Хорошо, чтобы удалить все существующие базы данных с именем [имя вашего приложения]? Y
Фиксация последних изменений в git. Есть один финальный коммит, который Rails Composer, по-видимому, по какой-то причине пропускает... Сделайте следующее:
$ git add .
$ git commit -am “Final rails_composer commit”
следуйте указаниям на http://bitbucket.org/, чтобы создать новый репозиторий для существующего проекта и передать его из командной строки
Следуйте инструкциям по " началу работы с рельсами" на heroku, которые включают в себя следующее:
$ heroku login
Введите свои учетные данные герою в подсказках.
$ heroku create [your app name (without the herokuapp.com stored as a local variable above)]
Убедитесь, что удаленная герока была добавлена с помощью следующей команды:
$ git config --list | grep heroku
$ git push heroku master
Теперь, когда вы создали приложение на heroku, вы также должны добавить туда некоторые переменные окружения с помощью следующих команд:
$ heroku config:set DOMAIN_NAME=[your app name].herokuapp.com
$ rake secret # uses rake to generate a new secret key
5ed8c7d9a3bda9cec3887b61f22aa95bf430a3a550407642b96751c7ef0ce8946a161506d6739da0dcaaea8c8f4f8b3335b1fb549e3cc54f0a4cec554ede05f8
Вырежьте и вставьте этот новый секретный ключ в команду ниже, чтобы установить переменную среды Heroku.
$ heroku config:set SECRET_KEY_BASE=5ed8c7d9a3bda9cec3887b61f22aa95bf430a3a550407642b96751c7ef0ce8946a161506d6739da0dcaaea8c8f4f8b3335b1fb549e3cc54f0a4cec554ede05f8
Примечание: вы должны использовать $ rake secret
сгенерировать SECRET_KEY_BASE, отличный от того, который я включил в код выше.
Теперь вы можете перенести базы данных heroku:
$ heroku run rake db:migrate
Создать Procfile
$ touch Procfile
[PROCFILE]
web: bundle exec puma -C config/puma.rb
$ touch config/puma.rb
[Config / puma.rb]
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
Потому что я не ожидаю, что мое приложение получит слишком много трафика и не могу гарантировать, что оно поточно-ориентированное:
$ heroku config:set MIN_THREADS=1 MAX_THREADS=1
Зафиксируйте этот файл конфигурации Procfile и puma с помощью:
$ git add .
$ git commit -m "Add Procfile and config/puma.rb"
$ git push && git push heroku
Я надеюсь, что эти инструкции полезны. Пожалуйста, не стесняйтесь добавлять к ним и улучшать их.