Як позбутися від помилки assets precompile при Деплой

  • Nginx
  • Ubuntu server
  • Ruby on Rails
  • Capistrano
  • Deployment

Перший раз намагаюся розгорнути додаток на своєму домашньому сервері ubuntu server 14, встановленим в VirtualBox`е. Капістрана перший раз почав промацувати вчора. Дещо навіть вийшло). Але тим не менше Деплой не проходить. Беру чисте додаток rails (на локальному компі rails s стартує і показує welcome). Намагаюся його задеплоіть. Бачу помилку assets: precompile. Взагалі чи можна його відключити, чи потрібен він, чи можна його зробити на локальному комп'ютері, де можна докладніше почитати про нього про цей ассетс: прекомпіле. На робочому проекті теж видає помилку (не пам'ятаю яку), тому вирішив спочатку взяти чистий проект, а потім мучити робочий. Викладаю конфіги:

config / deploy / production.rb
server '192.168.1.106', user: 'deployer', roles:% w

висновок cap production deploy:


Читав і робив з цього сабжу
З відмінностей: замість unicorn - passenger і замість github - мій же сервер, де в сусідній папці з сайтом валяється репозиторій, який я пущу з локального комп'ютера.

> 0.6.2)
rails-dom-testing (

> 1.0,> = 1.0.5)
rails-html-sanitizer (

> 1.0,> = 1.0.1)
actionview (4.2.1)
activesupport (= 4.2.1)
builder (

> 2.7.0)
rails-dom-testing (

> 1.0,> = 1.0.5)
rails-html-sanitizer (

> 1.0,> = 1.0.1)
activejob (4.2.1)
activesupport (= 4.2.1)
globalid (> = 0.3.0)
activemodel (4.2.1)
activesupport (= 4.2.1)
builder (

> 3.1)
activerecord (4.2.1)
activemodel (= 4.2.1)
activesupport (= 4.2.1)
arel (

> 6.0)
activesupport (4.2.1)
i18n (

> 1.7,> = 1.7.7)
minitest (

> 5.1)
thread_safe (

> 0.3,> = 0.3.4)
tzinfo (

> 1.1)
arel (6.0.3)
builder (3.2.2)
capistrano (3.4.0)
i18n
rake (> = 10.0.0)
sshkit (

> 1.3)
capistrano-bundler (1.1.4)
capistrano (

> 1.2)
capistrano-rails (1.1.3)
capistrano (

> 3.1)
capistrano-bundler (

> 1.1)
capistrano-rvm (0.1.2)
capistrano (

> 1.2)
colorize (0.7.7)
erubis (2.7.0)
globalid (0.3.6)
activesupport (> = 4.1.0)
i18n (0.7.0)
json (1.8.3)
loofah (2.0.3)
nokogiri (> = 1.5.9)
mail (2.6.3)
mime-types (> = 1.16, <3)
mime-types (2.6.1)
mini_portile (0.6.2)
minitest (5.8.0)
net-scp (1.2.1)
net-ssh (> = 2.6.5)
net-ssh (2.9.2)
nokogiri (1.6.6.2-x86-mingw32)
mini_portile (

> 0.6.0)
passenger (5.0.15)
rack
rake (> = 0.8.1)
rack (1.6.4)
rack-test (0.6.3)
rack (> = 1.0)
rails (4.2.1)
actionmailer (= 4.2.1)
actionpack (= 4.2.1)
actionview (= 4.2.1)
activejob (= 4.2.1)
activemodel (= 4.2.1)
activerecord (= 4.2.1)
activesupport (= 4.2.1)
bundler (> = 1.3.0, <2.0)
railties (= 4.2.1)
sprockets-rails
rails-deprecated_sanitizer (1.0.3)
activesupport (> = 4.2.0.alpha)
rails-dom-testing (1.0.7)
activesupport (> = 4.2.0.beta, <5.0)
nokogiri (

> 1.6.0)
rails-deprecated_sanitizer (> = 1.0.1)
rails-html-sanitizer (1.0.2)
loofah (

> 2.0)
railties (4.2.1)
actionpack (= 4.2.1)
activesupport (= 4.2.1)
rake (> = 0.8.7)
thor (> = 0.18.1, <2.0)
rake (10.4.2)
sass (3.4.16)
sass-rails (5.0.3)
railties (> = 4.0.0, <5.0)
sass (

> 3.1)
sprockets (> = 2.8, <4.0)
sprockets-rails (> = 2.0, <4.0)
tilt (

> 1.1)
sprockets (3.3.2)
rack (

> 1.0)
sprockets-rails (2.3.2)
actionpack (> = 3.0)
activesupport (> = 3.0)
sprockets (> = 2.8, <4.0)
sqlite3 (1.3.10-x86-mingw32)
sshkit (1.7.1)
colorize (> = 0.7.0)
net-scp (> = 1.1.2)
net-ssh (> = 2.8.0)
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
tzinfo (1.2.2)
thread_safe (

> 3.4.0)
capistrano-bundler (

> 1.1.3)
capistrano-rails (

> 1.1.2)
capistrano-rvm (

> 0.1.1)
nokogiri
passenger
rack (

> 1.6.1)
rails (= 4.2.1)
sass-rails (

> 5.0)
sqlite3
tzinfo-data

Знайшов цікавість: Є кілька причин того, що може виникнути бажання компілювати ресурси локально. Ось деякі з них:

У вас немає права записи в файлову систему production.
Ви розміщуєте більш ніж на одному сервері і хочете уникнути дублювання роботи.
Ви часто проводите деплоі, що не включають зміни ресурсів.
Локальна компіляція дозволяє зафіксувати скомпільовані файли в управлінні версіями і деплоіть як зазвичай.

Однак є три застереження:

Ви не повинні запускати завдання Capistrano, яка компілює ресурси.
Ви повинні переконатися, що у вашій системі розробки присутні всі необхідні компресори або мініфайери.
Ви повинні змінити наступну конфігураційні налаштування програми:
У config / environments / development.rb помістивши в нього такий рядок:

config.assets.prefix = "/ dev-assets"
Зміна prefix дозволяє Sprockets використовувати інший URL для обслуговування ресурсів в режимі development і передавати всі запити в Sprockets. Префікс залишився встановленим / assets в режимі production. Без цього зміни додаток буде обслуговуватися прекомпілірованние ресурсами з / assets в development, і ви не побачите будь-які локальні зміни, поки знову не скомпілюєте ресурси.

На практиці це дозволить прекомпілірованние локально, тримати ці файли в робочій гілці і при необхідності фіксувати в системі контролю версій. Режим development буде працювати так, як від від нього очікується
У мене вийшло скомпіліть їх локально. Як тепер Ви не повинні запускати завдання Capistrano, яка компілює ресурси.

Схожі статті