X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/741593ee2bf203c9261f604d094e3d8e621698a8..9fba408d66cc8aeb80b0f2497fc7bdd85b90e3bf:/cookbooks/web/resources/rails_port.rb diff --git a/cookbooks/web/resources/rails_port.rb b/cookbooks/web/resources/rails_port.rb index 79a969ee9..6395fb1d5 100644 --- a/cookbooks/web/resources/rails_port.rb +++ b/cookbooks/web/resources/rails_port.rb @@ -20,6 +20,7 @@ require "yaml" resource_name :rails_port +provides :rails_port default_action :create @@ -31,6 +32,7 @@ property :group, String property :repository, String, :default => "https://git.openstreetmap.org/public/rails.git" property :revision, String, :default => "live" property :run_migrations, [true, false], :default => false +property :build_assets, [true, false], :default => true property :email_from, String, :default => "OpenStreetMap " property :status, String, :default => "online" property :database_host, String @@ -79,6 +81,7 @@ action :create do imagemagick nodejs geoip-database + tzdata ] package %w[ @@ -108,7 +111,7 @@ action :create do gem_package "bundler#{new_resource.ruby}" do package_name "bundler" - version "1.16.2" + version "2.1.4" gem_binary "gem#{new_resource.ruby}" options "--format-executable" end @@ -121,19 +124,16 @@ action :create do declare_resource :directory, rails_directory do owner new_resource.user group new_resource.group - mode 0o2775 + mode "2775" end git rails_directory do action :sync repository new_resource.repository revision new_resource.revision + depth 1 user new_resource.user group new_resource.group - notifies :run, "execute[#{rails_directory}/Gemfile]" - notifies :run, "execute[#{rails_directory}/app/assets/javascripts/i18n]" - notifies :run, "execute[#{rails_directory}/public/assets]" - notifies :delete, "file[#{rails_directory}/public/export/embed.html]" notifies :restart, "passenger_application[#{rails_directory}]" end @@ -152,7 +152,7 @@ action :create do source "database.yml.erb" owner new_resource.user group new_resource.group - mode 0o664 + mode "664" variables :host => new_resource.database_host, :port => new_resource.database_port, :name => new_resource.database_name, @@ -278,9 +278,9 @@ action :create do path "#{rails_directory}/config/application.yml" owner new_resource.user group new_resource.group - mode 0o664 + mode "664" content application_yml - notifies :run, "execute[#{rails_directory}/public/assets]" + notifies :restart, "passenger_application[#{rails_directory}]" only_if { ::File.exist?("#{rails_directory}/config/example.application.yml") } end @@ -327,7 +327,8 @@ action :create do "support_email" => "support@openstreetmap.org", "email_return_path" => "bounces@openstreetmap.org", "geonames_username" => "openstreetmap", - "geoip_database" => "/usr/share/GeoIP/GeoIPv6.dat" + "geoip_database" => "/usr/share/GeoIP/GeoIPv6.dat", + "maxmind_database" => "/usr/share/GeoIP/GeoLite2-Country.mmdb" ) if new_resource.memcache_servers @@ -342,9 +343,8 @@ action :create do file "#{rails_directory}/config/settings.local.yml" do owner new_resource.user group new_resource.group - mode 0o664 + mode "664" content YAML.dump(settings) - notifies :run, "execute[#{rails_directory}/public/assets]" only_if { ::File.exist?("#{rails_directory}/config/settings.yml") } end @@ -358,23 +358,20 @@ action :create do file "#{rails_directory}/config/storage.yml" do owner new_resource.user group new_resource.group - mode 0o664 + mode "664" content YAML.dump(storage_configuration) - notifies :run, "execute[#{rails_directory}/public/assets]" end if new_resource.piwik_configuration file "#{rails_directory}/config/piwik.yml" do owner new_resource.user group new_resource.group - mode 0o664 + mode "664" content YAML.dump(new_resource.piwik_configuration) - notifies :run, "execute[#{rails_directory}/public/assets]" end else file "#{rails_directory}/config/piwik.yml" do action :delete - notifies :run, "execute[#{rails_directory}/public/assets]" end end @@ -386,6 +383,7 @@ action :create do group "root" environment "NOKOGIRI_USE_SYSTEM_LIBRARIES" => "yes" subscribes :run, "gem_package[bundler#{new_resource.ruby}]" + subscribes :run, "git[#{rails_directory}]" notifies :restart, "passenger_application[#{rails_directory}]" end @@ -400,28 +398,56 @@ action :create do only_if { new_resource.run_migrations } end + package "yarnpkg" do + only_if { new_resource.build_assets } + end + + execute "#{rails_directory}/package.json" do + action :nothing + command "bundle#{new_resource.ruby} exec rake yarn:install" + environment "HOME" => rails_directory, + "RAILS_ENV" => "production" + cwd rails_directory + user new_resource.user + group new_resource.group + subscribes :run, "git[#{rails_directory}]" + only_if { new_resource.build_assets } + end + execute "#{rails_directory}/app/assets/javascripts/i18n" do action :nothing command "bundle#{new_resource.ruby} exec rake i18n:js:export" - environment "RAILS_ENV" => "production" + environment "HOME" => rails_directory, + "RAILS_ENV" => "production" cwd rails_directory user new_resource.user group new_resource.group - notifies :run, "execute[#{rails_directory}/public/assets]" + subscribes :run, "git[#{rails_directory}]" + only_if { new_resource.build_assets } end execute "#{rails_directory}/public/assets" do action :nothing command "bundle#{new_resource.ruby} exec rake assets:precompile" - environment "RAILS_ENV" => "production" + environment "HOME" => rails_directory, + "RAILS_ENV" => "production" cwd rails_directory user new_resource.user group new_resource.group + subscribes :run, "git[#{rails_directory}]" + subscribes :run, "file[create:#{rails_directory}/config/application.yml]" + subscribes :run, "file[#{rails_directory}/config/settings.local.yml]" + subscribes :run, "file[#{rails_directory}/config/storage.yml]" + subscribes :run, "file[#{rails_directory}/config/piwik.yml]" + subscribes :run, "execute[#{rails_directory}/package.json]" + subscribes :run, "execute[#{rails_directory}/app/assets/javascripts/i18n]" notifies :restart, "passenger_application[#{rails_directory}]" + only_if { new_resource.build_assets } end file "#{rails_directory}/public/export/embed.html" do action :nothing + subscribes :delete, "git[#{rails_directory}]" end passenger_application rails_directory do @@ -434,7 +460,7 @@ action :create do source "rails.cron.erb" owner "root" group "root" - mode 0o755 + mode "755" variables :directory => rails_directory end end