muding 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. data/CHANGELOG +11 -0
  2. data/MANIFEST +77 -0
  3. data/MIT-LICENSE +22 -0
  4. data/README +21 -0
  5. data/bin/console +4 -0
  6. data/bin/destroy +4 -0
  7. data/bin/generate +4 -0
  8. data/bin/muding +16 -0
  9. data/bin/server +5 -0
  10. data/configs/boot.rb +4 -0
  11. data/configs/databases/mysql.yml +47 -0
  12. data/configs/databases/oracle.yml +30 -0
  13. data/configs/databases/postgresql.yml +44 -0
  14. data/configs/databases/sqlite2.yml +16 -0
  15. data/configs/databases/sqlite3.yml +16 -0
  16. data/doc/README_FOR_MUD +3 -0
  17. data/fresh_rakefile +4 -0
  18. data/helpers/mud.rb +8 -0
  19. data/helpers/mud_helper.rb +4 -0
  20. data/helpers/test_helper.rb +29 -0
  21. data/lib/acts/container.rb +70 -0
  22. data/lib/acts/expireable.rb +82 -0
  23. data/lib/commands/destroy.rb +7 -0
  24. data/lib/commands/generate.rb +7 -0
  25. data/lib/commands/server.rb +45 -0
  26. data/lib/commands/update.rb +5 -0
  27. data/lib/controller.rb +132 -0
  28. data/lib/handle.rb +42 -0
  29. data/lib/model.rb +11 -0
  30. data/lib/muding.rb +46 -0
  31. data/lib/muding_generator.rb +22 -0
  32. data/lib/muding_generator/base.rb +162 -0
  33. data/lib/muding_generator/commands.rb +519 -0
  34. data/lib/muding_generator/generators/applications/app/USAGE +14 -0
  35. data/lib/muding_generator/generators/applications/app/app_generator.rb +132 -0
  36. data/lib/muding_generator/generators/components/controller/USAGE +30 -0
  37. data/lib/muding_generator/generators/components/controller/controller_generator.rb +38 -0
  38. data/lib/muding_generator/generators/components/controller/templates/controller.rb +7 -0
  39. data/lib/muding_generator/generators/components/controller/templates/functional_test.rb +18 -0
  40. data/lib/muding_generator/generators/components/controller/templates/helper.rb +2 -0
  41. data/lib/muding_generator/generators/components/controller/templates/view.rhtml +2 -0
  42. data/lib/muding_generator/generators/components/migration/USAGE +14 -0
  43. data/lib/muding_generator/generators/components/migration/migration_generator.rb +7 -0
  44. data/lib/muding_generator/generators/components/migration/templates/migration.rb +7 -0
  45. data/lib/muding_generator/generators/components/model/USAGE +19 -0
  46. data/lib/muding_generator/generators/components/model/model_generator.rb +34 -0
  47. data/lib/muding_generator/generators/components/model/templates/fixtures.yml +5 -0
  48. data/lib/muding_generator/generators/components/model/templates/migration.rb +11 -0
  49. data/lib/muding_generator/generators/components/model/templates/model.rb +2 -0
  50. data/lib/muding_generator/generators/components/model/templates/unit_test.rb +10 -0
  51. data/lib/muding_generator/lookup.rb +210 -0
  52. data/lib/muding_generator/manifest.rb +53 -0
  53. data/lib/muding_generator/options.rb +140 -0
  54. data/lib/muding_generator/scripts.rb +83 -0
  55. data/lib/muding_generator/scripts/destroy.rb +7 -0
  56. data/lib/muding_generator/scripts/generate.rb +7 -0
  57. data/lib/muding_generator/scripts/update.rb +12 -0
  58. data/lib/muding_generator/simple_logger.rb +46 -0
  59. data/lib/muding_generator/spec.rb +44 -0
  60. data/lib/ruby_version_check.rb +12 -0
  61. data/lib/tasks/migrate.rake +33 -0
  62. metadata +149 -0
@@ -0,0 +1,11 @@
1
+ *** 0.1.0 / 2006-07-23
2
+
3
+ + 3 major enhancements
4
+ +acts_as_expireable
5
+ +acts_as container
6
+ +rails-like-deployement
7
+
8
+ *** 0.0.0 / 2006-07-13
9
+
10
+ + 1 major enhancements
11
+ +First Release
@@ -0,0 +1,77 @@
1
+ MIT-LICENSE
2
+ CHANGELOG
3
+ MANIFEST
4
+ README
5
+ fresh_rakefile
6
+ bin/
7
+ bin/muding
8
+ bin/server
9
+ bin/generate
10
+ bin/console
11
+ bin/destroy
12
+ configs/
13
+ configs/boot.rb
14
+ configs/databases/
15
+ configs/databases/mysql.yml
16
+ configs/databases/oracle.yml
17
+ configs/databases/postgresql.yml
18
+ configs/databases/sqlite2.yml
19
+ configs/databases/sqlite3.yml
20
+ doc/
21
+ doc/README_FOR_MUD
22
+ helpers/
23
+ helpers/mud.rb
24
+ helpers/mud_helper.rb
25
+ helpers/test_helper.rb
26
+ lib/
27
+ lib/controller.rb
28
+ lib/handle.rb
29
+ lib/model.rb
30
+ lib/muding.rb
31
+ lib/muding_generator.rb
32
+ lib/ruby_version_check.rb
33
+ lib/tasks/migrate.rake
34
+ lib/acts/expireable.rb
35
+ lib/acts/container.rb
36
+ lib/commands/
37
+ lib/commands/server.rb
38
+ lib/commands/destroy.rb
39
+ lib/commands/generate.rb
40
+ lib/commands/update.rb
41
+ lib/muding_generator/
42
+ lib/muding_generator/base.rb
43
+ lib/muding_generator/commands.rb
44
+ lib/muding_generator/lookup.rb
45
+ lib/muding_generator/manifest.rb
46
+ lib/muding_generator/options.rb
47
+ lib/muding_generator/scripts.rb
48
+ lib/muding_generator/simple_logger.rb
49
+ lib/muding_generator/spec.rb
50
+ lib/muding_generator/generators/
51
+ lib/muding_generator/generators/applications/
52
+ lib/muding_generator/generators/applications/app/
53
+ lib/muding_generator/generators/applications/app/app_generator.rb
54
+ lib/muding_generator/generators/applications/app/USAGE
55
+ lib/muding_generator/generators/components/
56
+ lib/muding_generator/generators/components/controller/
57
+ lib/muding_generator/generators/components/controller/controller_generator.rb
58
+ lib/muding_generator/generators/components/controller/USAGE
59
+ lib/muding_generator/generators/components/controller/templates/controller.rb
60
+ lib/muding_generator/generators/components/controller/templates/functional_test.rb
61
+ lib/muding_generator/generators/components/controller/templates/helper.rb
62
+ lib/muding_generator/generators/components/controller/templates/view.rhtml
63
+ lib/muding_generator/generators/components/migration/
64
+ lib/muding_generator/generators/components/migration/migration_generator.rb
65
+ lib/muding_generator/generators/components/migration/USAGE
66
+ lib/muding_generator/generators/components/migration/templates/migration.rb
67
+ lib/muding_generator/generators/components/model/
68
+ lib/muding_generator/generators/components/model/model_generator.rb
69
+ lib/muding_generator/generators/components/model/USAGE
70
+ lib/muding_generator/generators/components/model/templates/
71
+ lib/muding_generator/generators/components/model/templates/fixtures.yml
72
+ lib/muding_generator/generators/components/model/templates/migration.rb
73
+ lib/muding_generator/generators/components/model/templates/model.rb
74
+ lib/muding_generator/generators/components/model/templates/unit_test.rb
75
+ lib/muding_generator/scripts/destroy.rb
76
+ lib/muding_generator/scripts/generate.rb
77
+ lib/muding_generator/scripts/update.rb
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2004 Ryan Thomas Mulligan
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+
data/README ADDED
@@ -0,0 +1,21 @@
1
+ muding
2
+ http://rubyforge.org/projects/muding/
3
+ ryantmulligan@gmail.com
4
+
5
+ ** DESCRIPTION:
6
+
7
+ muding is a development framework for building multi-user environments.
8
+ The purpose of the framework is to separate the lower level functionality
9
+ common to all multi-user environments into a separate framework that can
10
+ be developed through open-source. Developers using the framework can then
11
+ build their multi-user environment on top of the framework, and update the
12
+ framework code independantly of their own code.
13
+
14
+ ** SETUP:
15
+ muding mudname
16
+ - creates a new directory at your current path for the mud you are
17
+ developing
18
+
19
+ ** INSTALL:
20
+
21
+ sudo gem install muding
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/console'
4
+
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/destroy'
4
+
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../config/boot'
3
+ require 'commands/generate'
4
+
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__) + '/../lib/ruby_version_check'
2
+
3
+ Signal.trap("INT") { puts; exit }
4
+
5
+ freeze = ARGV.any? { |option| %w(--freeze -f).include?(option) }
6
+ app_path = ARGV.first
7
+
8
+ require File.dirname(__FILE__) + '/../lib/muding_generator'
9
+
10
+ require 'muding_generator/scripts/generate'
11
+ Muding::Generator::Base.use_application_sources!
12
+ Muding::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
13
+
14
+ Dir.chdir(app_path) { `rake muding:freeze:gems`; puts "froze" } if freeze
15
+
16
+
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.dirname(__FILE__) + '/../config/boot'
4
+
5
+ require 'commands/server'
@@ -0,0 +1,4 @@
1
+ require 'rubygems'
2
+ require_gem 'muding'
3
+ MUDING_ROOT = File.dirname(__FILE__) + "/../"
4
+
@@ -0,0 +1,47 @@
1
+ # MySQL (default setup). Versions 4.1 and 5.0 are recommended.
2
+ #
3
+ # Install the MySQL driver:
4
+ # gem install mysql
5
+ # On MacOS X:
6
+ # gem install mysql -- --include=/usr/local/lib
7
+ # On Windows:
8
+ # There is no gem for Windows. Install mysql.so from RubyForApache.
9
+ # http://rubyforge.org/projects/rubyforapache
10
+ #
11
+ # And be sure to use new-style password hashing:
12
+ # http://dev.mysql.com/doc/refman/5.0/en/old-client.html
13
+ development:
14
+ adapter: mysql
15
+ database: <%= app_name %>_development
16
+ username: root
17
+ password:
18
+ <% if socket -%>
19
+ socket: <%= socket %>
20
+ <% else -%>
21
+ host: localhost
22
+ <% end -%>
23
+
24
+ # Warning: The database defined as 'test' will be erased and
25
+ # re-generated from your development database when you run 'rake'.
26
+ # Do not set this db to the same as development or production.
27
+ test:
28
+ adapter: mysql
29
+ database: <%= app_name %>_test
30
+ username: root
31
+ password:
32
+ <% if socket -%>
33
+ socket: <%= socket %>
34
+ <% else -%>
35
+ host: localhost
36
+ <% end -%>
37
+
38
+ production:
39
+ adapter: mysql
40
+ database: <%= app_name %>_production
41
+ username: root
42
+ password:
43
+ <% if socket -%>
44
+ socket: <%= socket %>
45
+ <% else -%>
46
+ host: localhost
47
+ <% end -%>
@@ -0,0 +1,30 @@
1
+ # Oracle/OCI 8i, 9, 10g
2
+ #
3
+ # Requires Ruby/OCI8:
4
+ # http://rubyforge.org/projects/ruby-oci8/
5
+ #
6
+ # Specify your database using any valid connection syntax, such as a
7
+ # tnsnames.ora service name, or a sql connect url string of the form:
8
+ #
9
+ # //host:[port][/service name]
10
+
11
+ development:
12
+ adapter: oracle
13
+ database: <%= app_name %>_development
14
+ username: <%= app_name %>
15
+ password:
16
+
17
+ # Warning: The database defined as 'test' will be erased and
18
+ # re-generated from your development database when you run 'rake'.
19
+ # Do not set this db to the same as development or production.
20
+ test:
21
+ adapter: oracle
22
+ database: <%= app_name %>_test
23
+ username: <%= app_name %>
24
+ password:
25
+
26
+ production:
27
+ adapter: oracle
28
+ database: <%= app_name %>_production
29
+ username: <%= app_name %>
30
+ password:
@@ -0,0 +1,44 @@
1
+ # PostgreSQL versions 7.4 - 8.1
2
+ #
3
+ # Get the C bindings:
4
+ # gem install postgres
5
+ # or use the pure-Ruby bindings on Windows:
6
+ # gem install postgres-pr
7
+ development:
8
+ adapter: postgresql
9
+ database: <%= app_name %>_development
10
+ username: <%= app_name %>
11
+ password:
12
+
13
+ # Connect on a TCP socket. Omitted by default since the client uses a
14
+ # domain socket that doesn't need configuration. Windows does not have
15
+ # domain sockets, so uncomment these lines.
16
+ #host: localhost
17
+ #port: 5432
18
+
19
+ # Schema search path. The server defaults to $user,public
20
+ #schema_search_path: myapp,sharedapp,public
21
+
22
+ # Character set encoding. The server defaults to sql_ascii.
23
+ #encoding: UTF8
24
+
25
+ # Minimum log levels, in increasing order:
26
+ # debug5, debug4, debug3, debug2, debug1,
27
+ # info, notice, warning, error, log, fatal, or panic
28
+ # The server defaults to notice.
29
+ #min_messages: warning
30
+
31
+ # Warning: The database defined as 'test' will be erased and
32
+ # re-generated from your development database when you run 'rake'.
33
+ # Do not set this db to the same as development or production.
34
+ test:
35
+ adapter: postgresql
36
+ database: <%= app_name %>_test
37
+ username: <%= app_name %>
38
+ password:
39
+
40
+ production:
41
+ adapter: postgresql
42
+ database: <%= app_name %>_production
43
+ username: <%= app_name %>
44
+ password:
@@ -0,0 +1,16 @@
1
+ # SQLite version 2.x
2
+ # gem install sqlite-ruby
3
+ development:
4
+ adapter: sqlite
5
+ database: db/development.sqlite2
6
+
7
+ # Warning: The database defined as 'test' will be erased and
8
+ # re-generated from your development database when you run 'rake'.
9
+ # Do not set this db to the same as development or production.
10
+ test:
11
+ adapter: sqlite
12
+ database: db/test.sqlite2
13
+
14
+ production:
15
+ adapter: sqlite
16
+ database: db/production.sqlite2
@@ -0,0 +1,16 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3-ruby
3
+ development:
4
+ adapter: sqlite3
5
+ database: db/development.sqlite3
6
+
7
+ # Warning: The database defined as 'test' will be erased and
8
+ # re-generated from your development database when you run 'rake'.
9
+ # Do not set this db to the same as development or production.
10
+ test:
11
+ adapter: sqlite3
12
+ database: db/test.sqlite3
13
+
14
+ production:
15
+ adapter: sqlite3
16
+ database: db/production.sqlite3
@@ -0,0 +1,3 @@
1
+ Use this README file to introduce your application and point to useful places in the API for learning more.
2
+ Run "rake appdoc" to generate API documentation for your models and controllers.
3
+
@@ -0,0 +1,4 @@
1
+ require 'rake'
2
+
3
+ #We get our tasks from lib/tasks
4
+ Dir["./lib/tasks/**/*.rake"].sort.each { |ext| load ext }
@@ -0,0 +1,8 @@
1
+ # Filters added to this controller will be run for all controllers in the mud.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+ class MudController < Controller::Base
4
+ def begin
5
+ render :text=> "Welcome to no-name mud"
6
+ end
7
+ end
8
+
@@ -0,0 +1,4 @@
1
+ # Methods added to this helper will be available to all templates in the mud.
2
+ module MudHelper
3
+ end
4
+
@@ -0,0 +1,29 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
+ require 'test_help'
4
+
5
+ class Test::Unit::TestCase
6
+ # Transactional fixtures accelerate your tests by wrapping each test method
7
+ # in a transaction that's rolled back on completion. This ensures that the
8
+ # test database remains unchanged so your fixtures don't have to be reloaded
9
+ # between every test method. Fewer database queries means faster tests.
10
+ #
11
+ # Read Mike Clark's excellent walkthrough at
12
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
13
+ #
14
+ # Every Active Record database supports transactions except MyISAM tables
15
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
16
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
17
+ # is recommended.
18
+ self.use_transactional_fixtures = true
19
+
20
+ # Instantiated fixtures are slow, but give you @david where otherwise you
21
+ # would need people(:david). If you don't want to migrate your existing
22
+ # test cases which use the @david style and don't mind the speed hit (each
23
+ # instantiated fixtures translates to a database query per test method),
24
+ # then set this back to true.
25
+ self.use_instantiated_fixtures = false
26
+
27
+ # Add more helper methods to be used by all tests here...
28
+ end
29
+
@@ -0,0 +1,70 @@
1
+ module Acts #:nodoc:
2
+ module Container
3
+ def self.included(base) # :nodoc:
4
+ base.extend ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def acts_as_container(options = {})
9
+ #future options...
10
+ #number limit
11
+ #size limit
12
+ #size of container
13
+ config = {:containables => []}
14
+ config.update options if options.is_a?(Hash)
15
+ cattr_accessor :containables
16
+
17
+ self.containables = config[:containables]
18
+
19
+ unless container?
20
+ config[:containables].each do |containable|
21
+ has_many containable, :as => :container, :dependent => :nullify
22
+ end
23
+ end
24
+
25
+ include InstanceMethods
26
+ end
27
+
28
+ def container?
29
+ self.included_modules.include?(InstanceMethods)
30
+ end
31
+ end
32
+
33
+ module InstanceMethods
34
+ def self.included(base) # :nodoc:
35
+ base.extend ClassMethods
36
+ end
37
+
38
+ def contents
39
+ contents = []
40
+ self.containables.each do |containable|
41
+ contents += self.send(containable)
42
+ end
43
+ contents
44
+ end
45
+
46
+ def <<(content)
47
+ self.containables.each do |containable|
48
+ begin
49
+ self.send(containable).<< content
50
+ return # if it successfully adds we are done with this method.
51
+
52
+ # there is probably a better way to do this. right now if it can't be added to the container
53
+ # we just catch that exception and keep going until we iterate through all the possibilities
54
+ rescue ActiveRecord::AssociationTypeMismatch
55
+ next
56
+ end
57
+ end
58
+ raise Exception.new("Unable to add content to container. Object type did not match any containable type.")
59
+ end
60
+
61
+ def message(message_string)
62
+ self.handle.message(message_string) if self.respond_to?(:handle)
63
+
64
+ self.contents.each do |content|
65
+ content.message(message_string)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end