natlownes-desert 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGES +46 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +316 -0
  4. data/Rakefile +77 -0
  5. data/VERSION.yml +2 -0
  6. data/generators/desert_plugin/USAGE +14 -0
  7. data/generators/desert_plugin/desert_plugin_generator.rb +73 -0
  8. data/generators/desert_plugin/templates/desert_routes.rb +4 -0
  9. data/generators/desert_plugin/templates/empty_file +0 -0
  10. data/generators/desert_plugin/templates/plugin_migration.rb +11 -0
  11. data/generators/desert_plugin/templates/spec_helper.rb +8 -0
  12. data/init.rb +0 -0
  13. data/lib/desert.rb +14 -0
  14. data/lib/desert/manager.rb +130 -0
  15. data/lib/desert/plugin.rb +74 -0
  16. data/lib/desert/plugin_migrations.rb +11 -0
  17. data/lib/desert/plugin_migrations/1.2/extensions/schema_statements.rb +34 -0
  18. data/lib/desert/plugin_migrations/1.2/migrator.rb +33 -0
  19. data/lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb +36 -0
  20. data/lib/desert/plugin_migrations/2.1/migrator.rb +35 -0
  21. data/lib/desert/plugin_migrations/migrator.rb +29 -0
  22. data/lib/desert/plugin_templates.rb +13 -0
  23. data/lib/desert/plugin_templates/1.2.0/action_mailer.rb +21 -0
  24. data/lib/desert/plugin_templates/1.2.0/action_view.rb +53 -0
  25. data/lib/desert/plugin_templates/1.99.0/action_mailer.rb +25 -0
  26. data/lib/desert/plugin_templates/1.99.0/action_view.rb +38 -0
  27. data/lib/desert/plugin_templates/2.0.0/action_mailer.rb +23 -0
  28. data/lib/desert/plugin_templates/2.0.2/action_view.rb +26 -0
  29. data/lib/desert/plugin_templates/2.1.0/action_view.rb +15 -0
  30. data/lib/desert/plugin_templates/2.2.0/action_mailer.rb +23 -0
  31. data/lib/desert/plugin_templates/2.2.0/action_view.rb +10 -0
  32. data/lib/desert/plugin_templates/action_controller.rb +12 -0
  33. data/lib/desert/plugin_templates/action_view.rb +17 -0
  34. data/lib/desert/rails.rb +10 -0
  35. data/lib/desert/rails/1.2.0/initializer.rb +20 -0
  36. data/lib/desert/rails/2.0.0/plugin.rb +22 -0
  37. data/lib/desert/rails/dependencies.rb +87 -0
  38. data/lib/desert/rails/migration.rb +36 -0
  39. data/lib/desert/rails/route_set.rb +23 -0
  40. data/lib/desert/ruby.rb +2 -0
  41. data/lib/desert/ruby/object.rb +34 -0
  42. data/lib/desert/supported_rails_versions.rb +12 -0
  43. data/lib/desert/tasks.rb +4 -0
  44. data/lib/desert/version_checker.rb +34 -0
  45. metadata +104 -0
@@ -0,0 +1,36 @@
1
+ class ActiveRecord::Migration
2
+ module DesertMigration
3
+ def migrate_plugin(plugin_name, version)
4
+ plugin = find_plugin(plugin_name)
5
+ Desert::PluginMigrations::Migrator.migrate_plugin(
6
+ plugin,
7
+ version
8
+ )
9
+ end
10
+
11
+ protected
12
+ def find_plugin(plugin_name)
13
+ plugin = Desert::Manager.find_plugin(plugin_name.to_s)
14
+ return plugin if plugin
15
+ raise ArgumentError, "No plugin found named #{plugin_name}"
16
+ end
17
+
18
+ def table_exists?(table_name)
19
+ vals = select_all("DESC #{table_name}")
20
+ return true
21
+ rescue ActiveRecord::StatementInvalid
22
+ return false
23
+ end
24
+
25
+ def column_exists?(table_name, column_name)
26
+ val = select_one("select #{column_name} from #{table_name}")
27
+ return true
28
+ rescue ActiveRecord::StatementInvalid
29
+ return false
30
+ end
31
+ def table_exists?(table_name)
32
+ ActiveRecord::Base.connection.tables.include? table_name
33
+ end
34
+ end
35
+ extend DesertMigration
36
+ end
@@ -0,0 +1,23 @@
1
+ module Desert
2
+ module Rails
3
+ module RouteSet
4
+ # Loads the set of routes from within a plugin and evaluates them at this
5
+ # point within an application's main <tt>routes.rb</tt> file.
6
+ #
7
+ # Plugin routes are loaded from <tt><plugin_root>/routes.rb</tt>.
8
+ def routes_from_plugin(name)
9
+ name = name.to_s
10
+ routes_path = File.join(
11
+ Desert::Manager.plugin_path(name),
12
+ "config/desert_routes.rb"
13
+ )
14
+ RAILS_DEFAULT_LOGGER.debug "Loading routes from #{routes_path}."
15
+ eval(IO.read(routes_path), binding, routes_path) if File.file?(routes_path)
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ class ActionController::Routing::RouteSet::Mapper
22
+ include Desert::Rails::RouteSet
23
+ end
@@ -0,0 +1,2 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/ruby/object"
@@ -0,0 +1,34 @@
1
+ class Object
2
+ def require_with_desert(path)
3
+ relative_include_path = (path =~ /\.rb$/) ? path : "#{path}.rb"
4
+ if $".include?(relative_include_path)
5
+ return false
6
+ else
7
+ __each_matching_file(path) do |expanded_path|
8
+ require_without_desert expanded_path
9
+ end
10
+ $" << relative_include_path
11
+ return true
12
+ end
13
+ end
14
+ alias_method_chain :require, :desert
15
+
16
+ def load_with_desert(file)
17
+ __each_matching_file(file) do |file|
18
+ load_without_desert file
19
+ end
20
+ end
21
+ alias_method_chain :load, :desert
22
+
23
+ private
24
+ def __each_matching_file(file)
25
+ files = Desert::Manager.instance.files_on_load_path(file)
26
+ desert_file_exists = files.empty? ? false : true
27
+ files.each do |component_file|
28
+ yield(component_file)
29
+ end
30
+
31
+ return true if desert_file_exists
32
+ yield(file)
33
+ end
34
+ end
@@ -0,0 +1,12 @@
1
+ module Desert
2
+ SUPPORTED_RAILS_VERSIONS = {
3
+ "1.2.5" => {'version' => '1.2.5', 'git_tag' => 'v1.2.5'},
4
+ "1.99.0" => {'version' => '1.99.0', 'git_tag' => 'v2.0.0_RC1'},
5
+ "2.0.2" => {'version' => '2.0.2', 'git_tag' => 'v2.0.2'},
6
+ "2.1.0" => {'version' => '2.1.0', 'git_tag' => 'v2.1.0'},
7
+ "2.2.0" => {'version' => '2.2.0', 'git_tag' => 'v2.2.0'},
8
+ "2.2.2" => {'version' => '2.2.2', 'git_tag' => 'v2.2.2'},
9
+ "2.3.2" => {'version' => '2.3.2', 'git_tag' => 'v2.3.2'},
10
+ # "edge" => {'version' => 'edge', 'git_tag' => 'master'},
11
+ }
12
+ end
@@ -0,0 +1,4 @@
1
+ dir = File.dirname(__FILE__)
2
+ Dir["#{dir}/tasks/*.rake"].each do |file|
3
+ load file
4
+ end
@@ -0,0 +1,34 @@
1
+ module Desert
2
+ class VersionChecker
3
+ class << self
4
+ def current_rails_version_matches?(version_requirement)
5
+ version_matches?(::Rails::VERSION::STRING, version_requirement)
6
+ end
7
+
8
+ def version_matches?(version, version_requirement)
9
+ Gem::Version::Requirement.new([version_requirement]).satisfied_by?(Gem::Version.new(version))
10
+ end
11
+
12
+ def rails_version_is_below_1990?
13
+ result = current_rails_version_matches?('<1.99.0')
14
+ result
15
+ end
16
+
17
+ def rails_version_is_below_rc2?
18
+ current_rails_version_matches?('<1.99.1')
19
+ end
20
+
21
+ def rails_version_is_1991?
22
+ current_rails_version_matches?('=1.99.1')
23
+ end
24
+
25
+ def rails_version_is_below_220?
26
+ current_rails_version_matches?('<2.2.0')
27
+ end
28
+
29
+ def rails_version_is_below_230?
30
+ current_rails_version_matches?('<2.3.0')
31
+ end
32
+ end
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: natlownes-desert
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
5
+ platform: ruby
6
+ authors:
7
+ - Pivotal Labs
8
+ - Brian Takita
9
+ - Parker Thompson
10
+ - Adam Milligan, Joe Moore
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+
15
+ date: 2009-08-26 00:00:00 -07:00
16
+ default_executable:
17
+ dependencies: []
18
+
19
+ description: Desert is a component framework for Rails that allows your plugins to be packaged as mini Rails apps.
20
+ email: opensource@pivotallabs.com
21
+ executables: []
22
+
23
+ extensions: []
24
+
25
+ extra_rdoc_files:
26
+ - CHANGES
27
+ - README.rdoc
28
+ files:
29
+ - CHANGES
30
+ - MIT-LICENSE
31
+ - README.rdoc
32
+ - Rakefile
33
+ - VERSION.yml
34
+ - generators/desert_plugin/USAGE
35
+ - generators/desert_plugin/desert_plugin_generator.rb
36
+ - generators/desert_plugin/templates/desert_routes.rb
37
+ - generators/desert_plugin/templates/empty_file
38
+ - generators/desert_plugin/templates/plugin_migration.rb
39
+ - generators/desert_plugin/templates/spec_helper.rb
40
+ - init.rb
41
+ - lib/desert.rb
42
+ - lib/desert/manager.rb
43
+ - lib/desert/plugin.rb
44
+ - lib/desert/plugin_migrations.rb
45
+ - lib/desert/plugin_migrations/1.2/extensions/schema_statements.rb
46
+ - lib/desert/plugin_migrations/1.2/migrator.rb
47
+ - lib/desert/plugin_migrations/2.1/extensions/schema_statements.rb
48
+ - lib/desert/plugin_migrations/2.1/migrator.rb
49
+ - lib/desert/plugin_migrations/migrator.rb
50
+ - lib/desert/plugin_templates.rb
51
+ - lib/desert/plugin_templates/1.2.0/action_mailer.rb
52
+ - lib/desert/plugin_templates/1.2.0/action_view.rb
53
+ - lib/desert/plugin_templates/1.99.0/action_mailer.rb
54
+ - lib/desert/plugin_templates/1.99.0/action_view.rb
55
+ - lib/desert/plugin_templates/2.0.0/action_mailer.rb
56
+ - lib/desert/plugin_templates/2.0.2/action_view.rb
57
+ - lib/desert/plugin_templates/2.1.0/action_view.rb
58
+ - lib/desert/plugin_templates/2.2.0/action_mailer.rb
59
+ - lib/desert/plugin_templates/2.2.0/action_view.rb
60
+ - lib/desert/plugin_templates/action_controller.rb
61
+ - lib/desert/plugin_templates/action_view.rb
62
+ - lib/desert/rails.rb
63
+ - lib/desert/rails/1.2.0/initializer.rb
64
+ - lib/desert/rails/2.0.0/plugin.rb
65
+ - lib/desert/rails/dependencies.rb
66
+ - lib/desert/rails/migration.rb
67
+ - lib/desert/rails/route_set.rb
68
+ - lib/desert/ruby.rb
69
+ - lib/desert/ruby/object.rb
70
+ - lib/desert/supported_rails_versions.rb
71
+ - lib/desert/tasks.rb
72
+ - lib/desert/version_checker.rb
73
+ has_rdoc: false
74
+ homepage: http://pivotallabs.com
75
+ licenses:
76
+ post_install_message:
77
+ rdoc_options:
78
+ - --main
79
+ - README.rdoc
80
+ - --inline-source
81
+ - --line-numbers
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ version:
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "0"
95
+ version:
96
+ requirements: []
97
+
98
+ rubyforge_project: desert
99
+ rubygems_version: 1.3.5
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: Desert is a component framework for Rails that allows your plugins to be packaged as mini Rails apps.
103
+ test_files: []
104
+