aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans de Graaff <graaff@gentoo.org>2019-07-22 18:56:58 +0200
committerHans de Graaff <graaff@gentoo.org>2019-07-22 18:56:58 +0200
commita1b7c2071bfaaadcfb2b8cbca8c5aafabb12923a (patch)
tree9c198fc51149a7601cb1164dcd4ac03079010efc
parentAdd ETag and Last-Modified headers based on specific package (diff)
downloadpackages-5-a1b7c2071bfaaadcfb2b8cbca8c5aafabb12923a.tar.gz
packages-5-a1b7c2071bfaaadcfb2b8cbca8c5aafabb12923a.tar.bz2
packages-5-a1b7c2071bfaaadcfb2b8cbca8c5aafabb12923a.zip
Update to Rails 5.1
This also fixes a bug in the fresh_when handling for the changelog view, which was exposed by the update (due to ETag now taking the flash message, if any, into account). Signed-off-by: Hans de Graaff <graaff@gentoo.org>
-rw-r--r--Gemfile5
-rw-r--r--Gemfile.lock88
-rw-r--r--app/controllers/packages_controller.rb16
-rwxr-xr-xbin/setup4
-rwxr-xr-xbin/yarn11
-rw-r--r--config/application.rb5
-rw-r--r--config/environments/development.rb4
-rw-r--r--config/environments/test.rb2
-rw-r--r--config/initializers/assets.rb9
9 files changed, 88 insertions, 56 deletions
diff --git a/Gemfile b/Gemfile
index dca327e..d9ec4fa 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,7 +1,7 @@
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem 'rails', '5.0.7.2'
+gem 'rails', '5.1.7'
# Use mysql as the database for Active Record
# gem 'mysql2'
# Use SCSS for stylesheets
@@ -49,6 +49,9 @@ group :development do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
+ # Enable event-based autoloading
+ gem 'listen'
+
# Access an IRB console on exception pages or by using <%= console %> in views
gem 'web-console', '~> 3.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index f03a6b1..7b8ebb6 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,44 +1,44 @@
GEM
remote: https://rubygems.org/
specs:
- actioncable (5.0.7.2)
- actionpack (= 5.0.7.2)
- nio4r (>= 1.2, < 3.0)
+ actioncable (5.1.7)
+ actionpack (= 5.1.7)
+ nio4r (~> 2.0)
websocket-driver (~> 0.6.1)
- actionmailer (5.0.7.2)
- actionpack (= 5.0.7.2)
- actionview (= 5.0.7.2)
- activejob (= 5.0.7.2)
+ actionmailer (5.1.7)
+ actionpack (= 5.1.7)
+ actionview (= 5.1.7)
+ activejob (= 5.1.7)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
- actionpack (5.0.7.2)
- actionview (= 5.0.7.2)
- activesupport (= 5.0.7.2)
+ actionpack (5.1.7)
+ actionview (= 5.1.7)
+ activesupport (= 5.1.7)
rack (~> 2.0)
- rack-test (~> 0.6.3)
+ rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2)
- actionview (5.0.7.2)
- activesupport (= 5.0.7.2)
+ actionview (5.1.7)
+ activesupport (= 5.1.7)
builder (~> 3.1)
- erubis (~> 2.7.0)
+ erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3)
- activejob (5.0.7.2)
- activesupport (= 5.0.7.2)
+ activejob (5.1.7)
+ activesupport (= 5.1.7)
globalid (>= 0.3.6)
- activemodel (5.0.7.2)
- activesupport (= 5.0.7.2)
- activerecord (5.0.7.2)
- activemodel (= 5.0.7.2)
- activesupport (= 5.0.7.2)
- arel (~> 7.0)
- activesupport (5.0.7.2)
+ activemodel (5.1.7)
+ activesupport (= 5.1.7)
+ activerecord (5.1.7)
+ activemodel (= 5.1.7)
+ activesupport (= 5.1.7)
+ arel (~> 8.0)
+ activesupport (5.1.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
- arel (7.1.4)
+ arel (8.0.0)
axiom-types (0.1.1)
descendants_tracker (~> 0.0.4)
ice_nine (~> 0.11.0)
@@ -75,7 +75,7 @@ GEM
faraday
multi_json
equalizer (0.0.11)
- erubis (2.7.0)
+ erubi (1.8.0)
eventmachine (1.2.7)
execjs (2.7.0)
faraday (0.15.4)
@@ -93,6 +93,10 @@ GEM
rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0)
thor (>= 0.14, < 2.0)
+ listen (3.1.5)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ ruby_dep (~> 1.2)
loofah (2.2.3)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
@@ -115,19 +119,19 @@ GEM
rack (2.0.7)
rack-protection (2.0.5)
rack
- rack-test (0.6.3)
- rack (>= 1.0)
- rails (5.0.7.2)
- actioncable (= 5.0.7.2)
- actionmailer (= 5.0.7.2)
- actionpack (= 5.0.7.2)
- actionview (= 5.0.7.2)
- activejob (= 5.0.7.2)
- activemodel (= 5.0.7.2)
- activerecord (= 5.0.7.2)
- activesupport (= 5.0.7.2)
+ rack-test (1.1.0)
+ rack (>= 1.0, < 3)
+ rails (5.1.7)
+ actioncable (= 5.1.7)
+ actionmailer (= 5.1.7)
+ actionpack (= 5.1.7)
+ actionview (= 5.1.7)
+ activejob (= 5.1.7)
+ activemodel (= 5.1.7)
+ activerecord (= 5.1.7)
+ activesupport (= 5.1.7)
bundler (>= 1.3.0)
- railties (= 5.0.7.2)
+ railties (= 5.1.7)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.4)
actionpack (>= 5.0.1.x)
@@ -138,9 +142,9 @@ GEM
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.4)
loofah (~> 2.2, >= 2.2.2)
- railties (5.0.7.2)
- actionpack (= 5.0.7.2)
- activesupport (= 5.0.7.2)
+ railties (5.1.7)
+ actionpack (= 5.1.7)
+ activesupport (= 5.1.7)
method_source
rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0)
@@ -151,6 +155,7 @@ GEM
rdiscount (2.2.0.1)
rdoc (6.1.1)
redis (4.1.2)
+ ruby_dep (1.5.0)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
@@ -214,9 +219,10 @@ DEPENDENCIES
elasticsearch-rails (~> 5.0)
jbuilder (~> 2.0)
jquery-rails (~> 4.3.5)
+ listen
nokogiri
octicons_helper
- rails (= 5.0.7.2)
+ rails (= 5.1.7)
rails-controller-testing
rdiscount
sass-rails (~> 5.0)
diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb
index de24b40..64cb289 100644
--- a/app/controllers/packages_controller.rb
+++ b/app/controllers/packages_controller.rb
@@ -37,15 +37,15 @@ class PackagesController < ApplicationController
@package = Package.find_by(:atom, params[:id])
fail ActionController::RoutingError, 'No such package' unless @package
- fresh_when etag: @package.updated_at, last_modified: @package.updated_at, public: true
-
- @changelog = Rails.cache.fetch("changelog/#{@package.atom}") do
- Portage::Util::History.for(@package.category, @package.name, 5)
- end
+ if stale?(etag: @package.updated_at, last_modified: @package.updated_at, public: true)
+ @changelog = Rails.cache.fetch("changelog/#{@package.atom}") do
+ Portage::Util::History.for(@package.category, @package.name, 5)
+ end
- respond_to do |wants|
- wants.html { render layout: false }
- wants.json {}
+ respond_to do |wants|
+ wants.html { render layout: false }
+ wants.json {}
+ end
end
end
diff --git a/bin/setup b/bin/setup
index e620b4d..78c4e86 100755
--- a/bin/setup
+++ b/bin/setup
@@ -18,6 +18,10 @@ chdir APP_ROOT do
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
+ # Install JavaScript dependencies if using Yarn
+ # system('bin/yarn')
+
+
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
# cp 'config/database.yml.sample', 'config/database.yml'
diff --git a/bin/yarn b/bin/yarn
new file mode 100755
index 0000000..c2bacef
--- /dev/null
+++ b/bin/yarn
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+VENDOR_PATH = File.expand_path('..', __dir__)
+Dir.chdir(VENDOR_PATH) do
+ begin
+ exec "yarnpkg #{ARGV.join(" ")}"
+ rescue Errno::ENOENT
+ $stderr.puts "Yarn executable was not detected in the system."
+ $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
+ exit 1
+ end
+end
diff --git a/config/application.rb b/config/application.rb
index 9639248..136f5cc 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -17,6 +17,9 @@ Bundler.require(*Rails.groups)
module Packages
class Application < Rails::Application
+ # Initialize configuration defaults for originally generated Rails version.
+ config.load_defaults 5.1
+
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
@@ -37,6 +40,8 @@ module Packages
config.autoload_paths << Rails.root.join('lib')
config.active_job.queue_adapter = :sidekiq
+
+ config.middleware.use ActionDispatch::Flash
end
end
diff --git a/config/environments/development.rb b/config/environments/development.rb
index d241472..5670ba7 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -18,7 +18,7 @@ Rails.application.configure do
config.cache_store = :memory_store
config.public_file_server.headers = {
- 'Cache-Control' => 'public, max-age=172800'
+ 'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}"
}
else
config.action_controller.perform_caching = false
@@ -50,5 +50,5 @@ Rails.application.configure do
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
- # config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+ config.file_watcher = ActiveSupport::EventedFileUpdateChecker
end
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 1619c9b..4154d7e 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -15,7 +15,7 @@ Rails.application.configure do
# Configure public file server for tests with Cache-Control for performance.
config.public_file_server.enabled = true
config.public_file_server.headers = {
- 'Cache-Control' => 'public, max-age=3600'
+ 'Cache-Control' => "public, max-age=#{1.hour.seconds.to_i}"
}
# Show full error reports and disable caching.
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
index 01ef3e6..4b828e8 100644
--- a/config/initializers/assets.rb
+++ b/config/initializers/assets.rb
@@ -3,9 +3,12 @@
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
-# Add additional assets to the asset load path
+# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
+# Add Yarn node_modules folder to the asset load path.
+Rails.application.config.assets.paths << Rails.root.join('node_modules')
# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
-# Rails.application.config.assets.precompile += %w( search.js )
+# application.js, application.css, and all non-JS/CSS in the app/assets
+# folder are already added.
+# Rails.application.config.assets.precompile += %w( admin.js admin.css )