2006-02-27 04:38:39 +00:00
task :default = > :test
2007-12-15 02:27:56 +00:00
2008-12-01 20:19:55 +00:00
task :rails_env do
2010-01-12 13:11:47 +00:00
# TODO Do we really need this?
2008-12-01 20:19:55 +00:00
unless defined? RAILS_ENV
RAILS_ENV = ENV [ 'RAILS_ENV' ] || = 'development'
end
end
2008-08-27 10:42:08 +00:00
desc 'Generate a crytographically secure secret key. This is typically used to generate a secret for cookie sessions.'
2007-12-16 23:10:48 +00:00
task :secret do
2009-04-29 00:58:51 +00:00
require 'active_support/secure_random'
2008-08-27 10:42:08 +00:00
puts ActiveSupport :: SecureRandom . hex ( 64 )
2007-12-15 02:27:56 +00:00
end
2008-03-22 01:59:09 +00:00
2010-02-03 00:03:47 +00:00
desc 'Explain the current environment'
task :about do
$LOAD_PATH . unshift " #{ RAILTIES_PATH } /builtin/rails_info "
require 'rails/info'
puts Rails :: Info
end
2008-03-22 01:59:09 +00:00
namespace :time do
namespace :zones do
desc 'Displays names of all time zones recognized by the Rails TimeZone class, grouped by offset. Results can be filtered with optional OFFSET parameter, e.g., OFFSET=-6'
2008-03-28 01:45:04 +00:00
task :all do
2008-03-22 01:59:09 +00:00
build_time_zone_list ( :all )
end
desc 'Displays names of US time zones recognized by the Rails TimeZone class, grouped by offset. Results can be filtered with optional OFFSET parameter, e.g., OFFSET=-6'
2008-03-28 01:45:04 +00:00
task :us do
2008-03-22 01:59:09 +00:00
build_time_zone_list ( :us_zones )
end
desc 'Displays names of time zones recognized by the Rails TimeZone class with the same offset as the system local time'
2008-03-28 01:45:04 +00:00
task :local do
2009-04-29 00:58:51 +00:00
require 'active_support'
2009-05-21 00:11:41 +00:00
require 'active_support/time'
2008-04-12 21:06:29 +00:00
jan_offset = Time . now . beginning_of_year . utc_offset
jul_offset = Time . now . beginning_of_year . change ( :month = > 7 ) . utc_offset
offset = jan_offset < jul_offset ? jan_offset : jul_offset
build_time_zone_list ( :all , offset )
2008-03-22 01:59:09 +00:00
end
# to find UTC -06:00 zones, OFFSET can be set to either -6, -6:00 or 21600
def build_time_zone_list ( method , offset = ENV [ 'OFFSET' ] )
2009-04-29 00:58:51 +00:00
require 'active_support'
2009-05-21 00:11:41 +00:00
require 'active_support/time'
2008-03-22 01:59:09 +00:00
if offset
offset = if offset . to_s . match ( / ( \ +|-)?( \ d+):( \ d+) / )
sign = $1 == '-' ? - 1 : 1
hours , minutes = $2 . to_f , $3 . to_f
( ( hours * 3600 ) + ( minutes . to_f * 60 ) ) * sign
elsif offset . to_f . abs < = 13
offset . to_f * 3600
else
offset . to_f
end
end
previous_offset = nil
2008-07-04 19:07:00 +00:00
ActiveSupport :: TimeZone . __send__ ( method ) . each do | zone |
2008-03-22 01:59:09 +00:00
if offset . nil? || offset == zone . utc_offset
puts " \n * UTC #{ zone . formatted_offset } * " unless zone . utc_offset == previous_offset
puts zone . name
previous_offset = zone . utc_offset
end
end
puts " \n "
end
end
2008-08-27 10:42:08 +00:00
end