mack 0.6.1.2 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +49 -3
- data/README +4 -4
- data/bin/mack +1 -2
- data/lib/mack/controller/controller.rb +1 -1
- data/lib/mack/controller/cookie_jar.rb +4 -0
- data/lib/mack/controller/request.rb +55 -3
- data/lib/mack/controller/session.rb +9 -0
- data/lib/mack/controller/tell.rb +13 -0
- data/lib/mack/core_extensions/kernel.rb +39 -11
- data/lib/mack/core_extensions/symbol.rb +107 -0
- data/lib/mack/generators/controller_generator/controller_generator.rb +64 -0
- data/lib/mack/generators/controller_generator/manifest.yml +18 -0
- data/lib/mack/generators/controller_generator/templates/app/controllers/controller.rb.template +7 -0
- data/lib/mack/generators/controller_generator/templates/test/controllers/rspec.rb.template +15 -0
- data/lib/mack/generators/controller_generator/templates/test/controllers/test_case.rb.template +15 -0
- data/lib/mack/generators/controller_helper_generator/controller_helper_generator.rb +16 -0
- data/lib/mack/generators/controller_helper_generator/manifest.yml +15 -0
- data/lib/mack/generators/controller_helper_generator/templates/app/helpers/controllers/helper.rb.template +7 -0
- data/lib/mack/generators/controller_helper_generator/templates/test/helpers/controllers/rspec.rb.template +6 -0
- data/lib/mack/generators/controller_helper_generator/templates/test/helpers/controllers/test_case.rb.template +10 -0
- data/lib/mack/generators/mack_application_generator/mack_application_generator.rb +1 -0
- data/lib/mack/generators/mack_application_generator/manifest.yml +26 -10
- data/lib/mack/generators/mack_application_generator/templates/Rakefile.template +1 -1
- data/lib/mack/generators/mack_application_generator/templates/app/controllers/default_controller.rb.template +7 -1
- data/lib/mack/generators/mack_application_generator/templates/app/helpers/controllers/default_controller_helper.rb.template +1 -1
- data/lib/mack/generators/mack_application_generator/templates/app/helpers/views/application_helper.rb.template +3 -0
- data/lib/mack/generators/mack_application_generator/templates/app/views/default/index.html.erb.template +60 -2
- data/lib/mack/generators/mack_application_generator/templates/app/views/layouts/application.html.erb.template +10 -2
- data/lib/mack/generators/mack_application_generator/templates/config/app_config/default.yml.template +21 -0
- data/lib/mack/generators/mack_application_generator/templates/config/app_config/development.yml.template +1 -0
- data/lib/mack/generators/mack_application_generator/templates/config/app_config/production.yml.template +1 -0
- data/lib/mack/generators/mack_application_generator/templates/config/app_config/test.yml.template +1 -0
- data/lib/mack/generators/mack_application_generator/templates/config/database.yml.template +24 -0
- data/lib/mack/generators/mack_application_generator/templates/config/initializers/inflections.rb.template +13 -0
- data/lib/mack/generators/mack_application_generator/templates/config/initializers/mime_types.rb.template +1 -0
- data/lib/mack/generators/mack_application_generator/templates/public/stylesheets/scaffold.css.template +125 -29
- data/lib/mack/generators/mack_application_generator/templates/test/{functional → controllers}/default_controller_spec.rb.template +2 -0
- data/lib/mack/generators/mack_application_generator/templates/test/{functional → controllers}/default_controller_test.rb.template +2 -0
- data/lib/mack/generators/mack_application_generator/templates/test/helpers/controllers/default_controller_helper_spec.rb.template +6 -0
- data/lib/mack/generators/mack_application_generator/templates/test/helpers/controllers/default_controller_helper_test.rb.template +10 -0
- data/lib/mack/generators/mack_application_generator/templates/test/helpers/views/application_helper_spec.rb.template +6 -0
- data/lib/mack/generators/mack_application_generator/templates/test/helpers/views/application_helper_test.rb.template +10 -0
- data/lib/mack/generators/view_helper_generator/manifest.yml +15 -0
- data/lib/mack/generators/view_helper_generator/templates/app/helpers/views/helper.rb.template +7 -0
- data/lib/mack/generators/view_helper_generator/templates/test/helpers/views/rspec.rb.template +6 -0
- data/lib/mack/generators/view_helper_generator/templates/test/helpers/views/test_case.rb.template +10 -0
- data/lib/mack/generators/view_helper_generator/view_helper_generator.rb +16 -0
- data/lib/mack/initialization/application.rb +6 -6
- data/lib/mack/initialization/configuration.rb +17 -9
- data/lib/mack/initialization/helpers.rb +3 -3
- data/lib/mack/initialization/logging.rb +30 -20
- data/lib/mack/rendering/view_template.rb +1 -0
- data/lib/mack/routing/route_map.rb +10 -12
- data/lib/mack/routing/urls.rb +0 -40
- data/lib/mack/runner.rb +7 -2
- data/lib/mack/runner_helpers/request_logger.rb +1 -1
- data/lib/mack/runner_helpers/session.rb +13 -6
- data/lib/mack/tasks/mack_dump_tasks.rake +1 -8
- data/lib/mack/tasks/mack_tasks.rake +1 -1
- data/lib/mack/tasks/test_tasks.rake +2 -2
- data/lib/mack/testing/file.rb +28 -0
- data/lib/mack/testing/helpers.rb +59 -4
- data/lib/mack/testing/rspec.rb +19 -7
- data/lib/mack/utils/mime_types.yml +1 -0
- data/lib/mack/utils/server.rb +1 -1
- data/lib/mack/version.rb +3 -0
- data/lib/mack/view_helpers/date_time_helpers.rb +106 -0
- data/lib/mack/view_helpers/form_helpers.rb +282 -0
- data/lib/mack/view_helpers/html_helpers.rb +4 -88
- data/lib/mack/view_helpers/link_helpers.rb +171 -0
- data/lib/mack/view_helpers/object_helpers.rb +14 -0
- data/lib/mack/view_helpers/string_helpers.rb +41 -0
- data/lib/mack_app.rb +1 -0
- data/lib/mack_core.rb +3 -7
- data/lib/mack_tasks.rb +8 -16
- metadata +36 -27
- data/bin/mack_ring_server +0 -33
- data/lib/mack/core_extensions/string.rb +0 -21
- data/lib/mack/distributed/errors/errors.rb +0 -27
- data/lib/mack/distributed/routing/urls.rb +0 -44
- data/lib/mack/distributed/utils/rinda.rb +0 -45
- data/lib/mack/initialization/orm_support.rb +0 -20
- data/lib/mack/tasks/mack_ring_server_tasks.rake +0 -33
- data/lib/mack/utils/crypt/default_worker.rb +0 -28
- data/lib/mack/utils/crypt/keeper.rb +0 -46
data/bin/mack_ring_server
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
#!/usr/local/bin/ruby
|
2
|
-
require 'rubygems'
|
3
|
-
require 'daemons'
|
4
|
-
require 'rinda/ring'
|
5
|
-
require 'rinda/tuplespace'
|
6
|
-
require 'fileutils'
|
7
|
-
require 'optparse'
|
8
|
-
require 'optparse/time'
|
9
|
-
require 'ostruct'
|
10
|
-
|
11
|
-
options = OpenStruct.new
|
12
|
-
opts = OptionParser.new do |opts|
|
13
|
-
opts.banner = <<-BANNER
|
14
|
-
Usage: mack_ring_server <command>
|
15
|
-
Available commands are:
|
16
|
-
|
17
|
-
- start
|
18
|
-
- stop
|
19
|
-
- restart
|
20
|
-
|
21
|
-
BANNER
|
22
|
-
end
|
23
|
-
|
24
|
-
opts.parse!(ARGV)
|
25
|
-
|
26
|
-
FileUtils.mkdir_p(File.join("tmp", "pids"))
|
27
|
-
|
28
|
-
Daemons.run_proc('mack_ring_server', {:dir_mode => :normal, :dir => File.join("tmp", "pids"), :monitor => true, :multiple => false}) do
|
29
|
-
puts 'Starting mack_ring_server...'
|
30
|
-
DRb.start_service
|
31
|
-
Rinda::RingServer.new(Rinda::TupleSpace.new)
|
32
|
-
DRb.thread.join
|
33
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class String
|
2
|
-
|
3
|
-
# Maps to Kernel _encrypt
|
4
|
-
#
|
5
|
-
# Examples:
|
6
|
-
# "Hello World".encrypt
|
7
|
-
# "Hello World".encrypt(:my_crypt)
|
8
|
-
def encrypt(worker = :default)
|
9
|
-
_encrypt(self, worker)
|
10
|
-
end
|
11
|
-
|
12
|
-
# Maps to Kernel _decrypt
|
13
|
-
#
|
14
|
-
# Examples:
|
15
|
-
# some_encrypted_string.decrypt
|
16
|
-
# some_encrypted_string.decrypt(:my_crypt)
|
17
|
-
def decrypt(worker = :default)
|
18
|
-
_decrypt(self, worker)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module Mack
|
2
|
-
module Distributed # :nodoc:
|
3
|
-
module Errors # :nodoc:
|
4
|
-
|
5
|
-
# Raised when an unknown distributed application is referenced.
|
6
|
-
class UnknownApplication < StandardError
|
7
|
-
# Takes the application name.
|
8
|
-
def initialize(app_name)
|
9
|
-
super("APPLICATION: #{app_name} is not a known/registered distributed application.")
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# Raised when an unknown distributed route name for a distributed application is referenced.
|
14
|
-
class UnknownRouteName < StandardError
|
15
|
-
# Takes the application name and the route name.
|
16
|
-
def initialize(app_name, route_name)
|
17
|
-
super("ROUTE_NAME: #{route_name}, is not a known/registered distributed route name for application: #{app_name}.")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
# Raised when an application doesn't declare it's application name for use in a distributed system.
|
22
|
-
class ApplicationNameUndefined < StandardError
|
23
|
-
end
|
24
|
-
|
25
|
-
end # Errors
|
26
|
-
end # Distributed
|
27
|
-
end # Mack
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Mack
|
2
|
-
module Distributed
|
3
|
-
module Routes
|
4
|
-
# A class used to house the Mack::Routes::Url module for distributed applications.
|
5
|
-
# Functionally this class does nothing, but since you can't cache a module, a class is needed.
|
6
|
-
class Urls
|
7
|
-
include DRbUndumped
|
8
|
-
|
9
|
-
def initialize(dsd) # :nodoc:
|
10
|
-
@dsd = dsd
|
11
|
-
end
|
12
|
-
|
13
|
-
def put
|
14
|
-
Mack::Distributed::Utils::Rinda.register_or_renew(:space => app_config.mack.distributed_app_name.to_sym,
|
15
|
-
:klass_def => :distributed_routes,
|
16
|
-
:object => self, :timeout => 0)
|
17
|
-
end
|
18
|
-
|
19
|
-
def run(meth, options)
|
20
|
-
self.send(meth, options)
|
21
|
-
end
|
22
|
-
|
23
|
-
class << self
|
24
|
-
|
25
|
-
def get(app_name)
|
26
|
-
Mack::Distributed::Utils::Rinda.read(:space => app_name.to_sym, :klass_def => :distributed_routes)
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end # Urls
|
32
|
-
|
33
|
-
end # Routes
|
34
|
-
end # Distributed
|
35
|
-
end # Mack
|
36
|
-
|
37
|
-
Mack::Routes.after_class_method(:build) do
|
38
|
-
if app_config.mack.use_distributed_routes
|
39
|
-
raise Mack::Distributed::Errors::ApplicationNameUndefined.new if app_config.mack.distributed_app_name.nil?
|
40
|
-
|
41
|
-
d_urls = Mack::Distributed::Routes::Urls.new(app_config.mack.distributed_site_domain)
|
42
|
-
d_urls.put
|
43
|
-
end
|
44
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Mack
|
2
|
-
module Distributed
|
3
|
-
module Utils
|
4
|
-
module Rinda
|
5
|
-
|
6
|
-
def self.register_or_renew(options = {})
|
7
|
-
options = handle_options(options)
|
8
|
-
::DRb.start_service
|
9
|
-
begin
|
10
|
-
ring_server.take([options[:space], options[:klass_def], nil, nil], options[:timeout])
|
11
|
-
rescue Exception => e
|
12
|
-
# Mack.logger.error(e)
|
13
|
-
end
|
14
|
-
register(options)
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.register(options = {})
|
18
|
-
options = handle_options(options)
|
19
|
-
::DRb.start_service
|
20
|
-
ring_server.write([options[:space],
|
21
|
-
options[:klass_def],
|
22
|
-
options[:object],
|
23
|
-
options[:description]],
|
24
|
-
::Rinda::SimpleRenewer.new)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.ring_server
|
28
|
-
rs = ::Rinda::RingFinger.primary
|
29
|
-
rs
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.read(options = {})
|
33
|
-
options = handle_options(options)
|
34
|
-
ring_server.read([options[:space], options[:klass_def], nil, options[:description]], options[:timeout])[2]
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
def self.handle_options(options = {})
|
39
|
-
{:space => :name, :klass_def => nil, :object => nil, :description => nil, :timeout => app_config.mack.drb_timeout}.merge(options)
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# If the application explicitly says it doesn't want to use any orm,
|
2
|
-
# then we're not going to initialize any default orm.
|
3
|
-
# Note: this is initialization process only. By the default, application
|
4
|
-
# generated by mack still have data_mapper as default.
|
5
|
-
orm = app_config.orm
|
6
|
-
unless orm.nil?
|
7
|
-
Mack.logger.warn %{
|
8
|
-
Please note that setting up orm in app_config has been deprecated, and will not be supported in future mack releases.
|
9
|
-
Here's how to update your existing application:
|
10
|
-
1. Remove the line:
|
11
|
-
orm: data_mapper
|
12
|
-
from the app_config/default.yml file
|
13
|
-
2. In gems.rb, add the following line in the require_gems block:
|
14
|
-
gem.add "mack-data_mapper", :libs => "mack-data_mapper"
|
15
|
-
** if you use active record, then change it to mack-active_record instead of mack-data_mapper
|
16
|
-
}
|
17
|
-
Mack.logger.debug "Initializing #{orm} orm..."
|
18
|
-
require "mack-#{orm}"
|
19
|
-
require "mack-#{orm}_tasks"
|
20
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'rinda/ring'
|
2
|
-
namespace :mack do
|
3
|
-
namespace :ring_server do
|
4
|
-
|
5
|
-
desc "Start the Rinda ring server"
|
6
|
-
task :start do
|
7
|
-
`mack_ring_server start`
|
8
|
-
end
|
9
|
-
|
10
|
-
desc "Stop the Rinda ring server"
|
11
|
-
task :stop do
|
12
|
-
`mack_ring_server stop`
|
13
|
-
end
|
14
|
-
|
15
|
-
namespace :services do
|
16
|
-
|
17
|
-
desc "Lists all services on the ring server"
|
18
|
-
task :list do
|
19
|
-
DRb.start_service
|
20
|
-
ring_server = Rinda::RingFinger.primary
|
21
|
-
services = ring_server.read_all([nil, nil, nil, nil])
|
22
|
-
puts "Services on #{ring_server.__drburi}"
|
23
|
-
services.each do |service|
|
24
|
-
puts "#{service[0]}: #{service[1]} on #{service[2].__drburi} - #{service[3]}"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
end # services
|
29
|
-
|
30
|
-
end # ring_server
|
31
|
-
end # mack
|
32
|
-
|
33
|
-
alias_task "mack:ring_server:restart", "mack:ring_server:stop", "mack:ring_server:start"
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Mack
|
2
|
-
module Utils # :nodoc:
|
3
|
-
module Crypt # :nodoc:
|
4
|
-
# The default worker is one that is used when no other worker is specified or the
|
5
|
-
# specified worker does not exist. It uses the Crypt::Rijndael library and get's
|
6
|
-
# it's secret key from app_config.default_secret_key
|
7
|
-
class DefaultWorker
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
@aes_key = ::Crypt::Rijndael.new(app_config.default_secret_key || (String.randomize(40)))
|
11
|
-
end
|
12
|
-
|
13
|
-
# Encrypts a string using the Crypt::Rijndael library and the secret key found in
|
14
|
-
# app_config.default_secret_key
|
15
|
-
def encrypt(x)
|
16
|
-
@aes_key.encrypt_string(x)
|
17
|
-
end
|
18
|
-
|
19
|
-
# Decrypts a string using the Crypt::Rijndael library and the secret key found in
|
20
|
-
# app_config.default_secret_key
|
21
|
-
def decrypt(x)
|
22
|
-
@aes_key.decrypt_string(x)
|
23
|
-
end
|
24
|
-
|
25
|
-
end # DefaultWorker
|
26
|
-
end # Crypt
|
27
|
-
end # Utils
|
28
|
-
end # Mack
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module Mack
|
2
|
-
module Utils
|
3
|
-
module Crypt
|
4
|
-
# A singleton class that holds/manages all the workers for the system.
|
5
|
-
#
|
6
|
-
# A worker must be defined as Mack::Utils::Crypt::<name>Worker and must
|
7
|
-
# define an encrypt(value) method and a decrypt(value) method.
|
8
|
-
#
|
9
|
-
# Example:
|
10
|
-
# class Mack::Utils::Crypt::ReverseWorker
|
11
|
-
# def encrypt(x)
|
12
|
-
# x.reverse
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# def decrypt(x)
|
16
|
-
# x.reverse
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
class Keeper
|
20
|
-
include Singleton
|
21
|
-
|
22
|
-
def initialize
|
23
|
-
@crypt_workers_cache = {}
|
24
|
-
end
|
25
|
-
|
26
|
-
# Returns a worker object to handle the encrytion/decryption.
|
27
|
-
# If the specified worker doesn't exist then Mack::Utils::Crypt::DefaultWorker
|
28
|
-
# is returned.
|
29
|
-
def worker(key = :default)
|
30
|
-
worker = @crypt_workers_cache[key.to_sym]
|
31
|
-
if worker.nil?
|
32
|
-
worker_klass = key.to_s.camelcase + "Worker"
|
33
|
-
if Mack::Utils::Crypt.const_defined?(worker_klass)
|
34
|
-
worker = "Mack::Utils::Crypt::#{worker_klass}".constantize.new
|
35
|
-
else
|
36
|
-
worker = Mack::Utils::Crypt::DefaultWorker.new
|
37
|
-
end
|
38
|
-
@crypt_workers_cache[key.to_sym] = worker
|
39
|
-
end
|
40
|
-
worker
|
41
|
-
end
|
42
|
-
|
43
|
-
end # Keeper
|
44
|
-
end # Crypt
|
45
|
-
end # Utils
|
46
|
-
end # Mack
|