From 77277abcd09dcdf5a8846f65560fb70eb88bad9a Mon Sep 17 00:00:00 2001 From: Joost Baaij Date: Wed, 13 Jul 2016 14:50:31 +0200 Subject: [PATCH 1/4] added /Procfile generator + test --- .../pageflow/procfile/procfile_generator.rb | 15 ++++++++++++++ .../pageflow/procfile/templates/Procfile | 3 +++ .../procfile/procfile_generator_spec.rb | 20 +++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 lib/generators/pageflow/procfile/procfile_generator.rb create mode 100644 lib/generators/pageflow/procfile/templates/Procfile create mode 100644 spec/generators/pageflow/procfile/procfile_generator_spec.rb diff --git a/lib/generators/pageflow/procfile/procfile_generator.rb b/lib/generators/pageflow/procfile/procfile_generator.rb new file mode 100644 index 0000000000..8b13de34b9 --- /dev/null +++ b/lib/generators/pageflow/procfile/procfile_generator.rb @@ -0,0 +1,15 @@ +require 'rails/generators' + +module Pageflow + module Generators + class ProcfileGenerator < Rails::Generators::Base + desc 'Generate a Procfile in Rails root.' + + source_root File.expand_path('../templates', __FILE__) + + def generate_procfile + copy_file 'Procfile', 'Procfile' + end + end + end +end diff --git a/lib/generators/pageflow/procfile/templates/Procfile b/lib/generators/pageflow/procfile/templates/Procfile new file mode 100644 index 0000000000..bfd531affa --- /dev/null +++ b/lib/generators/pageflow/procfile/templates/Procfile @@ -0,0 +1,3 @@ +web: bundle exec rails server +worker: bundle exec rake resque:work QUEUE=* +scheduler: bundle exec rake resque:scheduler QUEUE=* diff --git a/spec/generators/pageflow/procfile/procfile_generator_spec.rb b/spec/generators/pageflow/procfile/procfile_generator_spec.rb new file mode 100644 index 0000000000..76bc98c575 --- /dev/null +++ b/spec/generators/pageflow/procfile/procfile_generator_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' +require 'support/shared_contexts/generator' +require 'generators/pageflow/procfile/procfile_generator' + +module Pageflow + module Generators + describe ProcfileGenerator, type: :generator do + let(:procfile) { file('Procfile') } + + it "generates '/Procfile'" do + run_generator + + expect(procfile).to exist + expect(procfile).to contain "web: bundle exec rails server" + expect(procfile).to contain "worker: bundle exec rake resque:work QUEUE=*" + expect(procfile).to contain "scheduler: bundle exec rake resque:scheduler QUEUE=*" + end + end + end +end From 8f96541855dcde337d2a246c51a6d20db23f60e5 Mon Sep 17 00:00:00 2001 From: Joost Baaij Date: Wed, 13 Jul 2016 14:51:27 +0200 Subject: [PATCH 2/4] invoke the procfile generator from the install generator --- lib/generators/pageflow/install/install_generator.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/generators/pageflow/install/install_generator.rb b/lib/generators/pageflow/install/install_generator.rb index 87dbe7f2b5..c55dcc8424 100644 --- a/lib/generators/pageflow/install/install_generator.rb +++ b/lib/generators/pageflow/install/install_generator.rb @@ -14,6 +14,7 @@ def generate_all invoke 'pageflow:assets' invoke 'pageflow:initializer' + invoke 'pageflow:procfile' invoke 'pageflow:routes' invoke 'pageflow:user' invoke 'pageflow:seeds' From bdc924f0e8fba6a24f8d2799d4719f48004ce142 Mon Sep 17 00:00:00 2001 From: Joost Baaij Date: Wed, 13 Jul 2016 14:54:50 +0200 Subject: [PATCH 3/4] refer to generated Procfile instead of listing them in README. --- README.md | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 86d9bd9923..ec2b4c1316 100644 --- a/README.md +++ b/README.md @@ -140,19 +140,8 @@ application. ## Running Pageflow In addition to the Rails server, you need to start two Rake tasks for -the background job processing. First, start a Resque worker which handles -jobs from all queues: - - $ QUEUE=* rake resque:work - -Image and video processing are examples of jobs that are executes by these workers. - -Some jobs need to be executed repeatedly. For example, while videos are being -encoded by Zencoder, there is a job that runs every few seconds to fetch the -current progress. This delayed invocation of jobs is handled by the Resque -Scheduler Rake task: - - $ QUEUE=* rake resque:scheduler +the background job processing. These tasks are listed in `Procfile` which +is generated in the project root folder by the Pageflow installer. Consider using the [foreman gem](https://github.com/ddollar/foreman) to start all of these processes (including the Rails server) with a single command in your From 92c4407d9fb1f5cedb2785a85058e6c900e65f1a Mon Sep 17 00:00:00 2001 From: Joost Baaij Date: Wed, 13 Jul 2016 14:56:43 +0200 Subject: [PATCH 4/4] prefer single quoted strings --- .../generators/pageflow/procfile/procfile_generator_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/generators/pageflow/procfile/procfile_generator_spec.rb b/spec/generators/pageflow/procfile/procfile_generator_spec.rb index 76bc98c575..d6e80eb7f0 100644 --- a/spec/generators/pageflow/procfile/procfile_generator_spec.rb +++ b/spec/generators/pageflow/procfile/procfile_generator_spec.rb @@ -11,9 +11,9 @@ module Generators run_generator expect(procfile).to exist - expect(procfile).to contain "web: bundle exec rails server" - expect(procfile).to contain "worker: bundle exec rake resque:work QUEUE=*" - expect(procfile).to contain "scheduler: bundle exec rake resque:scheduler QUEUE=*" + expect(procfile).to contain 'web: bundle exec rails server' + expect(procfile).to contain 'worker: bundle exec rake resque:work QUEUE=*' + expect(procfile).to contain 'scheduler: bundle exec rake resque:scheduler QUEUE=*' end end end