папката с активи се създава автоматично вътре в public по време на внедряване с capistrano 3

Нямам никаква папка с активи в публичната (public/assets) директория на моето приложение. Когато се опитвам да разположа с capistrano v3. В моята отдалечена машина се създава нова папка, наречена public/assets. Също така получавам следната грешка, защото търси файл, наречен manifest.yml под public/assets(public/assets/manifest*). Необходимо ли е?? Каква е целта на това???

//getting the following error while deploying
DEBUG [014a40e4] Running /usr/bin/env [ -L /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ] on 50.13.220.55
DEBUG [014a40e4] Command: [ -L /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ]
DEBUG [014a40e4] Finished in 0.602 seconds with exit status 1 (failed).
DEBUG [9c5901ab] Running /usr/bin/env [ -d /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ] on 50.13.220.55
DEBUG [9c5901ab] Command: [ -d /home/ec2-user/capistrano-3/my_app/releases/20140117124107/public/assets ]
DEBUG [9c5901ab] Finished in 0.639 seconds with exit status 1 (failed).

//// тази грешка е в края на трасирането

** Извикване на deploy:assets:backup_manifest (first_time)

** Изпълнете deploy:assets:backup_manifest

DEBUG [a08f4c02]    cp: 
DEBUG [a08f4c02]    cannot stat `/home/ec2-user/capistrano-3/my_app/releases/20140117064709/public/assets/manifest*'
DEBUG [a08f4c02]    : No such file or directory
DEBUG [a08f4c02]    
cap aborted!
cp stdout: Nothing written
cp stderr: Nothing written

Tasks: TOP => deploy:assets:backup_manifest
The deploy has failed with an error: #<SSHKit::Command::Failed: cp stdout: Nothing written
cp stderr: Nothing written
>
** Invoke deploy:failed (first_time)
** Execute deploy:failed

person Sam    schedule 20.01.2014    source източник


Отговори (2)


По всичко личи, че вероятно използвате 3.1 или по-нова версия на rails във вашето приложение.

По принцип от ръководството:

Конвейерът на активите предоставя рамка за свързване и минимизиране или компресиране на JavaScript и CSS активи. Той също така добавя възможност за писане на тези активи на други езици като CoffeeScript, Sass и ERB.

Ето всичко, което трябва да знаете: http://guides.rubyonrails.org/asset_pipeline.html

Както е споменато в ръководството, можете да го деактивирате, като поставите/промените следния код във файла config/application.rb:

config.assets.enabled = false

Ако продължите да използвате конвейера на активите, тогава можете да компилирате предварително вашите активи, като използвате тази команда:

rake assets:precompile
# or
rake assets:precompile:all

Относно menifest.yml (от самото ръководство):

Задачата за рейк също генерира manifest.yml, който съдържа списък с всички ваши активи и съответните им отпечатъци. Това се използва от помощните методи на Rails, за да се избегне връщането на заявките за картографиране обратно на Sprockets. Типичен манифестен файл изглежда така:

---
rails.png: rails-bd9ad5a560b5a3a7be0808c5cd76a798.png
jquery-ui.min.js: jquery-ui-7e33882a28fc84ad0e0e47e46cbf901c.min.js
jquery.min.js: jquery-8a50feed8d29566738ad005e19fe1c2d.min.js
application.js: application-3fdab497b8fb70d20cfc5495239dfc29.js
application.css: application-8af74128f904600e41a6e39241464e03.css

И така, когато стартирате задачата за рейк. Той ще генерира файла menifest.yml, който съдържа записи на вашите активи, включително md5 хеш дайджест, който се използва за кеширане на вашите активи на ниво клиент. Всеки път, когато изпълнявате рейк задачата, ще получавате нов хеш за вашите активи. Което валидира/невалидира вашите активи, когато браузърът получи отговор от сървъра.

Насърчавам ви да използвате тръбопровод за активи, тъй като това също ще ви даде възможност да използвате CDN по много по-добър/лесен начин. Все пак в края на деня това е ваш избор.

АКТУАЛИЗАЦИЯ: За внедряване в capistrano 3 (тъй като capistrano 3 има много DSL промени) идва заедно с: require 'capistrano/deploy' в Capfile. Така че не е нужно да пишете своя собствена задача precompile_assets за вашето внедряване.

Разгледайте този отговор: https://stackoverflow.com/a/15690628/645886 и това: http://blog.blenderbox.com/2013/11/06/precompiling-assets-with-capistrano-3-0-1/. Надявам се това да помогне.

person Surya    schedule 20.01.2014
comment
@Surya- съдържанието ти е много полезно. благодаря. Когато стартирам rake assets:precompile, се генерира папка с манифест. Но когато стартирам cap development deploy --trace, отново получавам същата грешка. Актуализира грешката във въпроса ми. Внедрявам от локалната среда към средата за разработка ec2. - person Sam; 21.01.2014

Това е функционалността по подразбиране на релсите на Asset Pipeline. Прочетете това за по-добро разбиране. Asset Pipleine

Конвейерът на активите предоставя рамка за свързване и минимизиране или компресиране на JavaScript и CSS активи. Той също така добавя възможност за писане на тези активи на други езици като CoffeeScript, Sass и ERB.

Когато стартирате приложението rails в производствена среда, медийното съдържание, присъстващо в приложението/активите, се компилира и множество файлове се обединяват в един за по-бързо зареждане на активи.

Можете да проверите файла config/application.rb.config.assets.enabled = true

Това позволява тръбопровода на активите.

Когато се извърши предварителната компилация на активи, те се поставят в папка public/assets и записът се актуализира във файла manifest.yml.

Приложението Rails по подразбиране ще търси активите в папката public/assets. Активите не се компилират отново, ако не е извършена промяна. Можете или да компилирате активи, като използвате: rake assets:precompile, или когато рестартирате сървъра, той се компилира автоматично. Трябва да има js компилатор като node.js или rubyracer, за да компилира js.

В случай, че искате да избегнете компилацията, деактивирайте я от application.rb и предоставете пътя до вашите активи за производствена среда. В режим на разработка активите се обслужват от приложение/активи. Можете също да опитате да стартирате rake assets:precompile и да проверите дали папката с активи под public е създадена.

person Bijendra    schedule 20.01.2014
comment
@GhostRider- вашето съдържание е много полезно. Благодаря. Когато стартирам rake assets:precompile, се генерира папка с манифест. Но когато стартирам cap development deploy --trace, отново получавам същата грешка. Актуализира грешката във въпроса ми. Внедрявам от локалната среда към средата за разработка ec2. - person Sam; 21.01.2014