diff --git a/Gemfile b/Gemfile index a2db75a..80d688c 100644 --- a/Gemfile +++ b/Gemfile @@ -10,9 +10,9 @@ gem 'angular_rails_csrf' gem 'haml' source 'https://rails-assets.org' do - gem 'rails-assets-angular' - gem 'rails-assets-angular-route' - gem 'rails-assets-lazysizes' + gem 'rails-assets-angular', '1.4.5' + gem 'rails-assets-angular-route', '1.4.5' + gem 'rails-assets-lazysizes', '4.0.4' end gem 'uglifier', '>= 1.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index 3d301d7..08f38dc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -80,7 +80,7 @@ GEM erubis (2.7.0) eventmachine (1.0.9) execjs (2.7.0) - ffi (1.9.10) + ffi (1.9.25) globalid (0.4.1) activesupport (>= 4.2.0) haml (5.0.4) @@ -132,7 +132,7 @@ GEM rails-assets-angular (1.4.5) rails-assets-angular-route (1.4.5) rails-assets-angular (= 1.4.5) - rails-assets-lazysizes (1.3.2) + rails-assets-lazysizes (4.0.4) rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) rails-dom-testing (1.0.9) @@ -231,9 +231,9 @@ DEPENDENCIES pi_piper quiet_assets rails (~> 4.2) - rails-assets-angular! - rails-assets-angular-route! - rails-assets-lazysizes! + rails-assets-angular (= 1.4.5)! + rails-assets-angular-route (= 1.4.5)! + rails-assets-lazysizes (= 4.0.4)! rspec-rails rubocop simplecov diff --git a/config/initializers/gpio.rb b/config/initializers/gpio.rb index 40e4364..34d0500 100644 --- a/config/initializers/gpio.rb +++ b/config/initializers/gpio.rb @@ -1,10 +1,15 @@ # rubocop:disable Output +# rubocop:disable Lint/RescueException begin + $VERBOSE = nil require 'pi_piper' GpioPort.on(GpioPort::GPIO_PORTS['READY']) puts '*** Running with gpio support' -rescue StandardError +rescue Exception Object.send(:remove_const, :PiPiper) puts '*** Running without gpio support' +ensure + $VERBOSE = false end # rubocop:enable Output +# rubocop:enable Lint/RescueException diff --git a/config/unicorn.rb b/config/unicorn.rb index 9c5d464..f5c7a11 100644 --- a/config/unicorn.rb +++ b/config/unicorn.rb @@ -1,4 +1,5 @@ worker_processes 3 timeout 60 preload_app true -listen '0.0.0.0:3000', tcp_nopush: true + +# listen '0.0.0.0', tcp_nopush: true diff --git a/lib/tasks/picture_set.rake b/lib/tasks/picture_set.rake new file mode 100644 index 0000000..d9de44d --- /dev/null +++ b/lib/tasks/picture_set.rake @@ -0,0 +1,67 @@ +require 'fileutils' + +# rubocop:disable Metrics/BlockLength +namespace :picture_set do + COMBINED_SUFFIX = '_combined.jpg'.freeze + + desc 'Combine all images into one' + task :combine_images, [:path] => [:environment] do |_task, args| + path = args[:path] + path = Rails.root.join('public', 'picture_sets') if path.blank? + puts "Using directory #{path}." + Dir.chdir(path) do + picture_sets = Dir.glob('*').select { |f| File.directory? f } + picture_sets.each do |date| + puts "Processing #{date}..." + combine_images(date, path) + end + end + end + + desc 'Remove combined images. Necessary before running combine_images task again.' + task :clean_combine_images, [:path] => [:environment] do |_task, args| + path = args[:path] + path = Rails.root.join('public', 'picture_sets') if path.blank? + puts "Using directory #{path}." + Dir.chdir(path) do + picture_sets = Dir.glob('*').select { |f| File.directory? f } + picture_sets.each do |date| + Dir.chdir(File.join(path, date)) do + FileUtils.rm("#{date}#{COMBINED_SUFFIX}", force: true) + end + end + end + end + + desc 'Copies all images into one directory (without the single polaroids)' + task :copy, %i[path output] => [:environment] do |_task, args| + path = args[:path] + path = Rails.root.join('public', 'picture_sets') if path.blank? + puts "Using directory #{path}." + Dir.chdir(path) do + picture_sets = Dir.glob('*').select { |f| File.directory?(f) && f != 'all' } + picture_sets.each do |date| + begin + Syscall.execute("cp #{File.join(path, date, '*.jpg')} #{args[:output]}") + Syscall.execute("cp #{File.join(path, date, '*.gif')} #{args[:output]}") + rescue StandardError => e + puts e + end + end + end + end + + def combine_images(date, path) + dir = File.join(path, date) + return if File.exist?(File.join(dir, "#{date}#{COMBINED_SUFFIX}")) + begin + Syscall.execute("time montage -geometry '25%x25%+25+25<' -background '#{OPTS.background_color}' " \ + "-title '#{OPTS.image_caption}' -font '#{OPTS.font}' -fill '#{OPTS.font_color}' " \ + "-pointsize #{OPTS.combined_image_fontsize} -gravity 'Center' #{date}_*.jpg #{date}#{COMBINED_SUFFIX}", + dir: dir) + rescue StandardError => e + puts "Can not process #{dir}: #{e}" + end + end +end +# rubocop:enable Metrics/BlockLength