* Throw away old system * Add new system * Add new example files * Replace all calls * add the most important docs * Add Specs * rename disable_ssl_requirement to require_ssl * cloudfiles isn't used/called in our code * since community_spotlight.list is only used as enable flag replace it with such one and remove all legacy and irelevant codepaths around it * die if session secret is unset and on heroku * First basic infrastructure for version information
115 lines
3 KiB
Ruby
115 lines
3 KiB
Ruby
module Configuration
|
|
module Methods
|
|
def pod_uri
|
|
return @pod_uri unless @pod_uri.nil?
|
|
|
|
url = environment.url.get
|
|
url = "http://#{url}" unless url =~ /^(https?:\/\/)/
|
|
url << "/" unless url.end_with?("/")
|
|
|
|
begin
|
|
@pod_url = Addressable::URI.parse(url)
|
|
rescue
|
|
puts "WARNING: pod url #{url} is not a legal URI"
|
|
end
|
|
|
|
@pod_url
|
|
end
|
|
|
|
def bare_pod_uri
|
|
pod_uri.authority.gsub('www.', '')
|
|
end
|
|
|
|
def configured_services
|
|
return @configured_services unless @configured_services.nil?
|
|
|
|
@configured_services = []
|
|
[:twitter, :tumblr, :facebook].each do |service|
|
|
@configured_services << service if services.send(service).enable?
|
|
end
|
|
|
|
@configured_services
|
|
end
|
|
attr_writer :configured_services
|
|
|
|
def secret_token
|
|
return ENV['SECRET_TOKEN'] if ENV['SECRET_TOKEN']
|
|
$stderr.puts "FATAL: Running on Heroku with SECRET_TOKEN unset"
|
|
$stderr.puts " Run heroku config:add SECRET_TOKEN=#{SecureRandom.hex(40)}"
|
|
Process.exit(1)
|
|
end
|
|
|
|
def version_string
|
|
return @version_string unless @version_string.nil?
|
|
@version_string = version.number.to_s
|
|
@version_string << "pre" unless version.release?
|
|
@version_string << "-p#{git_revision[0..7]}" if git_available?
|
|
@version_string
|
|
end
|
|
|
|
def git_available?
|
|
return @git_available unless @git_available.nil?
|
|
|
|
if heroku?
|
|
@git_available = false
|
|
else
|
|
`which git`
|
|
@git_available = $?.success?
|
|
end
|
|
end
|
|
|
|
def git_revision
|
|
get_git_info if git_available?
|
|
@git_revision
|
|
end
|
|
attr_writer :git_revision
|
|
|
|
def git_update
|
|
get_git_info if git_available?
|
|
@git_update
|
|
end
|
|
attr_writer :git_update
|
|
|
|
def rails_asset_id
|
|
(git_revision || version)[0..8]
|
|
end
|
|
|
|
def get_redis_instance
|
|
if redistogo_url.present?
|
|
$stderr.puts "WARNING: using the REDISTOGO_URL environment variable is deprecated, please use REDIS_URL now."
|
|
ENV['REDIS_URL'] = redistogo_url
|
|
end
|
|
|
|
redis_options = {}
|
|
|
|
redis_url = ENV['REDIS_URL'] || environment.redis.get
|
|
|
|
if ENV['RAILS_ENV']== 'integration2'
|
|
redis_options = { :host => 'localhost', :port => 6380 }
|
|
elsif redis_url.present?
|
|
unless redis_url.start_with?("redis://") || redis_url.start_with?("unix:///")
|
|
$stderr.puts "WARNING: Your redis url (#{redis_url}) doesn't start with redis:// or unix:///"
|
|
end
|
|
redis_options = { :url => redis_url }
|
|
end
|
|
|
|
Redis.new(redis_options.merge(:thread_safe => true))
|
|
end
|
|
|
|
private
|
|
|
|
def get_git_info
|
|
return if git_info_present? || !git_available?
|
|
|
|
git_cmd = `git log -1 --pretty="format:%H %ci"`
|
|
if git_cmd =~ /^([\d\w]+?)\s(.+)$/
|
|
@git_revision = $1
|
|
@git_update = $2.strip
|
|
end
|
|
end
|
|
|
|
def git_info_present?
|
|
@git_revision || @git_update
|
|
end
|
|
end
|
|
end
|