]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/web/definitions/rails_port.rb
Revert "Make an EditedFile look like a string"
[chef.git] / cookbooks / web / definitions / rails_port.rb
index 48606f7b27caab361488cf04214001182a634df7..dbc5c32107a6dbcf4b3be501b2e960cd18c5a508 100644 (file)
@@ -17,6 +17,8 @@
 # limitations under the License.
 #
 
+require "yaml"
+
 define :rails_port, :action => [ :create, :enable ] do
   name = params[:name]
   ruby_version = params[:ruby] || "1.9.1"
@@ -41,6 +43,7 @@ define :rails_port, :action => [ :create, :enable ] do
   package "rubygems#{ruby_version}"
   package "irb#{ruby_version}"
   package "imagemagick"
+  package "nodejs"
 
   package "g++"
   package "libpq-dev"
@@ -51,6 +54,7 @@ define :rails_port, :action => [ :create, :enable ] do
 
   gem_package "bundler#{ruby_version}" do
     package_name "bundler"
+    version "1.3.5"
     gem_binary "gem#{ruby_version}"
     options "--format-executable"
   end
@@ -75,11 +79,12 @@ define :rails_port, :action => [ :create, :enable ] do
   execute "#{rails_directory}/public/assets" do
     action :nothing
     command "rake#{ruby_version} assets:precompile"
+    environment "RAILS_ENV" => "production"
     cwd rails_directory
     user rails_user
     group rails_group
-    notifies :delete, resources(:file => "#{rails_directory}/public/export/embed.html")
-    notifies :touch, resources(:file => "#{rails_directory}/tmp/restart.txt")
+    notifies :delete, "file[#{rails_directory}/public/export/embed.html]"
+    notifies :touch, "file[#{rails_directory}/tmp/restart.txt]"
   end
 
   execute "#{rails_directory}/db/migrate" do
@@ -88,7 +93,7 @@ define :rails_port, :action => [ :create, :enable ] do
     cwd rails_directory
     user rails_user
     group rails_group
-    notifies :run, resources(:execute => "#{rails_directory}/public/assets")
+    notifies :run, "execute[#{rails_directory}/public/assets]"
   end
 
   execute "#{rails_directory}/Gemfile" do
@@ -98,11 +103,11 @@ define :rails_port, :action => [ :create, :enable ] do
     user "root"
     group "root"
     if run_migrations
-      notifies :run, resources(:execute => "#{rails_directory}/db/migrate")
+      notifies :run, "execute[#{rails_directory}/db/migrate]"
     else
-      notifies :run, resources(:execute => "#{rails_directory}/public/assets")
+      notifies :run, "execute[#{rails_directory}/public/assets]"
     end
-    subscribes :run, resources(:gem_package => "bundler#{ruby_version}")
+    subscribes :run, "gem_package[bundler#{ruby_version}]"
   end
 
   directory rails_directory do
@@ -117,7 +122,7 @@ define :rails_port, :action => [ :create, :enable ] do
     revision rails_revision
     user rails_user
     group rails_group
-    notifies :run, resources(:execute => "#{rails_directory}/Gemfile")
+    notifies :run, "execute[#{rails_directory}/Gemfile]"
   end
 
   directory "#{rails_directory}/tmp" do
@@ -137,82 +142,93 @@ define :rails_port, :action => [ :create, :enable ] do
     group rails_group
     mode 0664
     variables database_params
-    notifies :touch, resources(:file => "#{rails_directory}/tmp/restart.txt")
+    notifies :touch, "file[#{rails_directory}/tmp/restart.txt]"
   end
 
-  file "#{rails_directory}/config/application.yml" do
-    owner rails_user
-    group rails_group
-    mode 0664
-    content_from_file "#{rails_directory}/config/example.application.yml" do |line|
-      line.gsub!(/^( *)server_url:.*$/, "\\1server_url: \"#{name}\"")
+  application_yml = edit_file "#{rails_directory}/config/example.application.yml" do |line|
+    line.gsub!(/^( *)server_url:.*$/, "\\1server_url: \"#{name}\"")
 
-      if params[:email_from]
-        line.gsub!(/^( *)email_from:.*$/, "\\1email_from: \"#{params[:email_from]}\"")
-      end
+    if params[:email_from]
+      line.gsub!(/^( *)email_from:.*$/, "\\1email_from: \"#{params[:email_from]}\"")
+    end
 
-      line.gsub!(/^( *)status:.*$/, "\\1status: :#{status}")
+    line.gsub!(/^( *)status:.*$/, "\\1status: :#{status}")
 
-      if params[:messages_domain]
-        line.gsub!(/^( *)#messages_domain:.*$/, "\\1messages_domain: \"#{params[:messages_domain]}\"")
-      end
+    if params[:messages_domain]
+      line.gsub!(/^( *)#messages_domain:.*$/, "\\1messages_domain: \"#{params[:messages_domain]}\"")
+    end
 
-      line.gsub!(/^( *)#geonames_username:.*$/, "\\1geonames_username: \"openstreetmap\"")
+    line.gsub!(/^( *)#geonames_username:.*$/, "\\1geonames_username: \"openstreetmap\"")
 
-      if params[:quova_username]
-        line.gsub!(/^( *)#quova_username:.*$/, "\\1quova_username: \"#{params[:quova_username]}\"")
-        line.gsub!(/^( *)#quova_password:.*$/, "\\1quova_password: \"#{params[:quova_password]}\"")
-      end
+    if params[:quova_username]
+      line.gsub!(/^( *)#quova_username:.*$/, "\\1quova_username: \"#{params[:quova_username]}\"")
+      line.gsub!(/^( *)#quova_password:.*$/, "\\1quova_password: \"#{params[:quova_password]}\"")
+    end
 
-      if params[:soft_memory_limit]
-        line.gsub!(/^( *)#soft_memory_limit:.*$/, "\\1soft_memory_limit: #{params[:soft_memory_limit]}")
-      end
+    if params[:soft_memory_limit]
+      line.gsub!(/^( *)#soft_memory_limit:.*$/, "\\1soft_memory_limit: #{params[:soft_memory_limit]}")
+    end
 
-      if params[:hard_memory_limit]
-        line.gsub!(/^( *)#hard_memory_limit:.*$/, "\\1hard_memory_limit: #{params[:hard_memory_limit]}")
-      end
+    if params[:hard_memory_limit]
+      line.gsub!(/^( *)#hard_memory_limit:.*$/, "\\1hard_memory_limit: #{params[:hard_memory_limit]}")
+    end
 
-      if params[:gpx_dir]
-        line.gsub!(/^( *)gpx_trace_dir:.*$/, "\\1gpx_trace_dir: \"#{params[:gpx_dir]}/traces\"")
-        line.gsub!(/^( *)gpx_image_dir:.*$/, "\\1gpx_image_dir: \"#{params[:gpx_dir]}/images\"")
-      end
+    if params[:gpx_dir]
+      line.gsub!(/^( *)gpx_trace_dir:.*$/, "\\1gpx_trace_dir: \"#{params[:gpx_dir]}/traces\"")
+      line.gsub!(/^( *)gpx_image_dir:.*$/, "\\1gpx_image_dir: \"#{params[:gpx_dir]}/images\"")
+    end
 
-      if params[:attachments_dir]
-        line.gsub!(/^( *)attachments_dir:.*$/, "\\1attachments_dir: \"#{params[:attachments_dir]}\"")
-      end
+    if params[:attachments_dir]
+      line.gsub!(/^( *)attachments_dir:.*$/, "\\1attachments_dir: \"#{params[:attachments_dir]}\"")
+    end
 
-      if params[:log_path]
-        line.gsub!(/^( *)#log_path:.*$/, "\\1log_path: \"#{params[:log_path]}\"")
-      end
+    if params[:log_path]
+      line.gsub!(/^( *)#log_path:.*$/, "\\1log_path: \"#{params[:log_path]}\"")
+    end
 
-      if params[:memcache_servers]
-        line.gsub!(/^( *)#memcache_servers:.*$/, "\\1memcache_servers: [ \"#{params[:memcache_servers].join("\", \"")}\" ]")
-      end
+    if params[:memcache_servers]
+      line.gsub!(/^( *)#memcache_servers:.*$/, "\\1memcache_servers: [ \"#{params[:memcache_servers].join("\", \"")}\" ]")
+    end
+
+    if params[:potlatch2_key]
+      line.gsub!(/^( *)#potlatch2_key:.*$/, "\\1potlatch2_key: \"#{params[:potlatch2_key]}\"")
+    end
 
-      if params[:potlatch2_key]
-        line.gsub!(/^( *)#potlatch2_key:.*$/, "\\1potlatch2_key: \"#{params[:potlatch2_key]}\"")
-      end
+    if params[:id_key]
+      line.gsub!(/^( *)#id_key:.*$/, "\\1id_key: \"#{params[:id_key]}\"")
+    end
 
-      if params[:id_key]
-        line.gsub!(/^( *)#id_key:.*$/, "\\1id_key: \"#{params[:id_key]}\"")
-      end
+    if params[:oauth_key]
+      line.gsub!(/^( *)#oauth_key:.*$/, "\\1oauth_key: \"#{params[:oauth_key]}\"")
+    end
 
-      if params[:oauth_key]
-        line.gsub!(/^( *)#oauth_key:.*$/, "\\1oauth_key: \"#{params[:oauth_key]}\"")
-      end
+    line.gsub!(/^( *)require_terms_seen:.*$/, "\\1require_terms_seen: true")
+    line.gsub!(/^( *)require_terms_agreed:.*$/, "\\1require_terms_agreed: true")
 
-      line.gsub!(/^( *)require_terms_seen:.*$/, "\\1require_terms_seen: true")
-      line.gsub!(/^( *)require_terms_agreed:.*$/, "\\1require_terms_agreed: true")
+    line
+  end
 
-      if params[:piwik_location]
-        line.gsub!(/^( *)#piwik_location:.*$/, "\\1piwik_location: \"#{params[:piwik_location]}\"")
-        line.gsub!(/^( *)#piwik_site:.*$/, "\\1piwik_site: #{params[:piwik_site]}")
-        line.gsub!(/^( *)#piwik_signup_goal:.*$/, "\\1piwik_signup_goal: #{params[:piwik_signup_goal]}")
-      end
+  file "#{rails_directory}/config/application.yml" do
+    owner rails_user
+    group rails_group
+    mode 0664
+    content application_yml
+    notifies :touch, "file[#{rails_directory}/tmp/restart.txt]"
+  end
 
-      line
+  if params[:piwik_configuration]
+    file "#{rails_directory}/config/piwik.yml" do
+      owner rails_user
+      group rails_group
+      mode 0664
+      content YAML.dump(params[: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
-    notifies :touch, resources(:file => "#{rails_directory}/tmp/restart.txt")
   end
 
   execute "#{rails_directory}/lib/quad_tile/extconf.rb" do
@@ -234,7 +250,7 @@ define :rails_port, :action => [ :create, :enable ] do
       File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.c") and
       File.mtime("#{rails_directory}/lib/quad_tile/quad_tile_so.so") >= File.mtime("#{rails_directory}/lib/quad_tile/quad_tile.h")
     end
-    notifies :touch, resources(:file => "#{rails_directory}/tmp/restart.txt")
+    notifies :touch, "file[#{rails_directory}/tmp/restart.txt]"
   end
 
   template "/etc/cron.daily/rails-#{name}" do