Merge branch 'master' of https://github.com/sgrove/engine into sgrove-master

This commit is contained in:
did 2011-03-28 01:01:30 +02:00
commit 6ba884e459
12 changed files with 174 additions and 4 deletions

View File

@ -25,6 +25,7 @@ gem 'fog', '0.3.7'
gem 'mimetype-fu'
gem 'actionmailer-with-request'
gem 'heroku', '1.18.2'
gem 'bushido'
gem 'httparty', '>= 0.6.1'
gem 'RedCloth', '4.2.7'
gem 'delayed_job', '2.1.4'

7
bushido.json Normal file
View File

@ -0,0 +1,7 @@
{
"platform": "rails",
"platform_version": 3,
"ruby_version": "1.9.2",
"sql": false,
"mongodb": true
}

View File

@ -1,3 +1,10 @@
# TODO: Make this store to RAILS_ROOT/permanent
# On bushido, the app directory is destroyed on every update, so everything is lost.
# The only place this doesn't happen is the RAILS_ROOT/permanent folder.
# Also, RAILS_ROOT/permanent/store is symlinked to RAILS_ROOT/public/store on every update,
# so store your publicly-accessible files here (e.g. templates, etc.)
CarrierWave.configure do |config|
case Rails.env.to_sym

View File

@ -10,7 +10,7 @@ Locomotive.configure do |config|
# during the installation wizzard.
# Ex:
# config.default_domain = Rails.env.production? ? 'heroku.com' : 'example.com'
config.default_domain = 'example.com'
config.default_domain = ENV["APP_TLD"] || 'example.com'
# configure how many items we display in sub menu in the "Contents" section.
config.lastest_items_nb = 5
@ -32,6 +32,14 @@ Locomotive.configure do |config|
# config.heroku = { :name => '<my heroku app name>', :login => 'john@doe.net', :password => 'easy' }
config.heroku = false
# tell if the application is hosted on Bushido.
# If enabled, there's no further configuration needed.
# Bushido will take care of eveything
#
# Ex:
# config.bushido = true
config.bushido = ENV['HOSTING_PLATFORM'] == 'bushido'
# Locomotive uses the DelayedJob gem for the theme import module.
# In case you want to deploy to Heroku, you will have to pay for an extra dyno.
# If you do not mind about importing theme without DelayedJob, disable it.
@ -41,5 +49,5 @@ Locomotive.configure do |config|
config.default_locale = :en
# Configure the e-mail address which will be shown in the DeviseMailer, NotificationMailer, ...etc
config.mailer_sender = 'support@example.com'
config.mailer_sender = ENV['BUSHIDO_DOMAIN'] ? "support@#{ENV['BUSHIDO_DOMAIN']}" : 'support@example.com'
end

View File

@ -1,7 +1,9 @@
# Be sure to restart your server when you modify this file.
require 'digest/sha1'
# Your secret key for verifying the integrity of signed cookies.
# If you change this key, all old signed cookies will become invalid!
# Make sure the secret is at least 30 characters and all random,
# no regular words or you'll be exposed to dictionary attacks.
Rails.application.config.secret_token = 'aa84844b97e90edda8e005a686d82c3bef1f8e20a1255301f1d0886fc592a45ef2393d64b0c3d3ea858b1f6406ad6f15305666264716a79fcfa17de93ad0d69d'
token = ENV['BUSHIDO_SALT'] || 'aa84844b97e90edda8e005a686d82c3bef1f8e20a1255301f1d0886fc592a45ef2393d64b0c3d3ea858b1f6406ad6f15305666264716a79fcfa17de93ad0d69d'
Rails.application.config.secret_token = Digest::SHA1.hexdigest(token)

View File

@ -31,3 +31,5 @@ production:
# heroku
# uri: <%= ENV['MONGOHQ_URL'] %>
# bushido (mongohq_url will also work)
uri: <%= ENV['MONGODB_URL'] %>

View File

@ -9,6 +9,7 @@ require 'locomotive/liquid'
require 'locomotive/mongoid'
require 'locomotive/carrierwave'
require 'locomotive/heroku'
require 'locomotive/bushido'
require 'locomotive/custom_fields'
require 'locomotive/httparty'
require 'locomotive/inherited_resources'
@ -24,6 +25,7 @@ require 'locomotive/session_store'
module Locomotive
include Locomotive::Heroku
include Locomotive::BushidoSupport
class << self
attr_accessor :config
@ -51,9 +53,12 @@ module Locomotive
:key => Locomotive.config.cookie_key
}
# Heroku support
# Hosting-platform support
self.enable_heroku if self.heroku?
# Bushido support
self.enable_bushido if self.bushido?
# Devise
Devise.mailer_sender = self.config.mailer_sender

69
lib/locomotive/bushido.rb Normal file
View File

@ -0,0 +1,69 @@
require 'bushido'
require 'locomotive/bushido/custom_domain'
module Locomotive
module BushidoSupport
extend ActiveSupport::Concern
included do
class << self
attr_accessor :bushido_domains
attr_accessor :bushido_subdomain
puts @bushido_domains
end
end
module ClassMethods
def bushido?
ENV["HOSTING_PLATFORM"] == "bushido"
end
def enable_bushido
self.enhance_site_model
self.bushido_domains = Bushido::App.domains
self.bushido_subdomain = Bushido::App.subdomain
end
def enhance_site_model
Site.send :include, Locomotive::BushidoSupport::CustomDomain
end
# manage domains
def add_bushido_domain(name)
Locomotive.logger "[add bushido domain] #{name}"
Bushido::App.add_domain(name)
if Bushido::Command.last_command_successful?
self.bushido_domains << name
end
end
def remove_bushido_domain(name)
Locomotive.logger "[remove bushido domain] #{name}"
Bushido::App.remove_domain(name)
if Bushido::Command.last_command_successful?
self.bushido_domains.delete(name)
end
end
def set_bushido_subdomain(name)
Locomotive.logger "[set bushido subdomain] #{name}.bushi.do"
Bushido::App.set_subdomain(name)
if Bushido::Command.last_command_successful?
self.bushido_subdomain = name
end
end
end
end
end

View File

@ -0,0 +1,52 @@
module Locomotive
module BushidoSupport
module CustomDomain
extend ActiveSupport::Concern
included do
after_save :add_bushido_domains
after_destroy :remove_bushido_domains
alias_method_chain :add_subdomain_to_domains, :bushido
end
module InstanceMethods
protected
def add_subdomain_to_domains_with_bushido
unless self.domains_change.nil?
full_subdomain = "#{self.subdomain}.#{Locomotive.config.default_domain}"
@bushido_domains_change = {
:added => self.domains_change.last - self.domains_change.first - [full_subdomain],
:removed => self.domains_change.first - self.domains_change.last - [full_subdomain]
}
end
add_subdomain_to_domains_without_bushido
end
def add_bushido_domains
return if @bushido_domains_change.nil?
@bushido_domains_change[:added].each do |name|
Locomotive.add_bushido_domain(name)
end
@bushido_domains_change[:removed].each do |name|
Locomotive.remove_bushido_domain(name)
end
end
def remove_bushido_domains
self.domains_without_subdomain.each do |name|
Locomotive.remove_bushido_domain(name)
end
end
end
end
end
end

View File

@ -11,6 +11,7 @@ module Locomotive
:cookie_key => '_locomotive_session',
:enable_logs => false,
:heroku => false,
:bushido => false,
:delayed_job => true,
:default_locale => :en,
:mailer_sender => 'support@example.com'

View File

@ -15,6 +15,7 @@ require 'custom_fields'
require 'mimetype_fu'
require 'actionmailer_with_request'
require 'heroku'
require 'bushido'
require 'httparty'
require 'redcloth'
require 'delayed_job_mongoid'

15
lib/tasks/bushido.rake Normal file
View File

@ -0,0 +1,15 @@
require 'bushido'
require 'jammit'
namespace :bushido do
desc "Prepare an app to run on the Bushido hosting platform, only called during the initial installation. Called just before booting the app."
task :install do
Jammit.package!
end
desc "Prepare an app to run on the Bushido hosting platform, called on every update. Called just before booting the app."
task :update do
Jammit.package!
end
end