rails 1.0.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rails might be problematic. Click here for more details.

Files changed (156) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +103 -0
  3. metadata +228 -294
  4. data/CHANGELOG +0 -865
  5. data/MIT-LICENSE +0 -20
  6. data/README +0 -153
  7. data/Rakefile +0 -422
  8. data/bin/about +0 -3
  9. data/bin/breakpointer +0 -3
  10. data/bin/console +0 -3
  11. data/bin/destroy +0 -3
  12. data/bin/generate +0 -3
  13. data/bin/performance/benchmarker +0 -3
  14. data/bin/performance/profiler +0 -3
  15. data/bin/plugin +0 -3
  16. data/bin/process/reaper +0 -3
  17. data/bin/process/spawner +0 -3
  18. data/bin/process/spinner +0 -3
  19. data/bin/rails +0 -21
  20. data/bin/runner +0 -3
  21. data/bin/server +0 -3
  22. data/builtin/controllers/rails_info_controller.rb +0 -11
  23. data/configs/apache.conf +0 -40
  24. data/configs/database.yml +0 -85
  25. data/configs/empty.log +0 -0
  26. data/configs/lighttpd.conf +0 -40
  27. data/configs/routes.rb +0 -19
  28. data/dispatches/dispatch.fcgi +0 -24
  29. data/dispatches/dispatch.rb +0 -10
  30. data/dispatches/gateway.cgi +0 -97
  31. data/doc/README_FOR_APP +0 -2
  32. data/environments/boot.rb +0 -19
  33. data/environments/development.rb +0 -19
  34. data/environments/environment.rb +0 -53
  35. data/environments/production.rb +0 -19
  36. data/environments/test.rb +0 -19
  37. data/fresh_rakefile +0 -10
  38. data/helpers/application.rb +0 -4
  39. data/helpers/application_helper.rb +0 -3
  40. data/helpers/test_helper.rb +0 -28
  41. data/html/404.html +0 -8
  42. data/html/500.html +0 -8
  43. data/html/favicon.ico +0 -0
  44. data/html/images/rails.png +0 -0
  45. data/html/index.html +0 -277
  46. data/html/javascripts/controls.js +0 -750
  47. data/html/javascripts/dragdrop.js +0 -584
  48. data/html/javascripts/effects.js +0 -854
  49. data/html/javascripts/prototype.js +0 -1785
  50. data/html/robots.txt +0 -1
  51. data/lib/binding_of_caller.rb +0 -85
  52. data/lib/breakpoint.rb +0 -523
  53. data/lib/breakpoint_client.rb +0 -196
  54. data/lib/code_statistics.rb +0 -107
  55. data/lib/commands/about.rb +0 -2
  56. data/lib/commands/breakpointer.rb +0 -1
  57. data/lib/commands/console.rb +0 -23
  58. data/lib/commands/destroy.rb +0 -6
  59. data/lib/commands/generate.rb +0 -6
  60. data/lib/commands/ncgi/listener +0 -86
  61. data/lib/commands/ncgi/tracker +0 -69
  62. data/lib/commands/performance/benchmarker.rb +0 -24
  63. data/lib/commands/performance/profiler.rb +0 -34
  64. data/lib/commands/plugin.rb +0 -823
  65. data/lib/commands/process/reaper.rb +0 -130
  66. data/lib/commands/process/spawner.rb +0 -52
  67. data/lib/commands/process/spinner.rb +0 -57
  68. data/lib/commands/runner.rb +0 -27
  69. data/lib/commands/server.rb +0 -28
  70. data/lib/commands/servers/lighttpd.rb +0 -60
  71. data/lib/commands/servers/webrick.rb +0 -59
  72. data/lib/commands/update.rb +0 -4
  73. data/lib/commands.rb +0 -17
  74. data/lib/console_sandbox.rb +0 -6
  75. data/lib/dispatcher.rb +0 -99
  76. data/lib/fcgi_handler.rb +0 -189
  77. data/lib/initializer.rb +0 -553
  78. data/lib/rails_generator/base.rb +0 -203
  79. data/lib/rails_generator/commands.rb +0 -509
  80. data/lib/rails_generator/generators/applications/app/USAGE +0 -16
  81. data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -140
  82. data/lib/rails_generator/generators/components/controller/USAGE +0 -30
  83. data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -38
  84. data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -10
  85. data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -18
  86. data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
  87. data/lib/rails_generator/generators/components/controller/templates/view.rhtml +0 -2
  88. data/lib/rails_generator/generators/components/mailer/USAGE +0 -18
  89. data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -32
  90. data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -3
  91. data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -13
  92. data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -37
  93. data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -3
  94. data/lib/rails_generator/generators/components/migration/USAGE +0 -14
  95. data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -7
  96. data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -7
  97. data/lib/rails_generator/generators/components/model/USAGE +0 -17
  98. data/lib/rails_generator/generators/components/model/model_generator.rb +0 -18
  99. data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
  100. data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
  101. data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -10
  102. data/lib/rails_generator/generators/components/plugin/USAGE +0 -33
  103. data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -33
  104. data/lib/rails_generator/generators/components/plugin/templates/README +0 -4
  105. data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -22
  106. data/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
  107. data/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
  108. data/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
  109. data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
  110. data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
  111. data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
  112. data/lib/rails_generator/generators/components/scaffold/USAGE +0 -32
  113. data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -184
  114. data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -54
  115. data/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +0 -3
  116. data/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +0 -1
  117. data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -98
  118. data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
  119. data/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +0 -13
  120. data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -74
  121. data/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +0 -9
  122. data/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +0 -27
  123. data/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +0 -8
  124. data/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +0 -8
  125. data/lib/rails_generator/generators/components/session_migration/USAGE +0 -15
  126. data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -12
  127. data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -15
  128. data/lib/rails_generator/generators/components/web_service/USAGE +0 -28
  129. data/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +0 -5
  130. data/lib/rails_generator/generators/components/web_service/templates/controller.rb +0 -8
  131. data/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +0 -19
  132. data/lib/rails_generator/generators/components/web_service/web_service_generator.rb +0 -29
  133. data/lib/rails_generator/lookup.rb +0 -210
  134. data/lib/rails_generator/manifest.rb +0 -53
  135. data/lib/rails_generator/options.rb +0 -140
  136. data/lib/rails_generator/scripts/destroy.rb +0 -7
  137. data/lib/rails_generator/scripts/generate.rb +0 -7
  138. data/lib/rails_generator/scripts/update.rb +0 -12
  139. data/lib/rails_generator/scripts.rb +0 -83
  140. data/lib/rails_generator/simple_logger.rb +0 -46
  141. data/lib/rails_generator/spec.rb +0 -44
  142. data/lib/rails_generator.rb +0 -43
  143. data/lib/rails_info.rb +0 -104
  144. data/lib/rails_version.rb +0 -9
  145. data/lib/railties_path.rb +0 -1
  146. data/lib/rubyprof_ext.rb +0 -35
  147. data/lib/tasks/databases.rake +0 -158
  148. data/lib/tasks/documentation.rake +0 -76
  149. data/lib/tasks/framework.rake +0 -71
  150. data/lib/tasks/javascripts.rake +0 -6
  151. data/lib/tasks/misc.rake +0 -19
  152. data/lib/tasks/rails.rb +0 -8
  153. data/lib/tasks/statistics.rake +0 -16
  154. data/lib/tasks/testing.rake +0 -50
  155. data/lib/test_help.rb +0 -17
  156. data/lib/webrick_server.rb +0 -170
@@ -1,54 +0,0 @@
1
- class <%= controller_class_name %>Controller < ApplicationController
2
- <% unless suffix -%>
3
- def index
4
- list
5
- render :action => 'list'
6
- end
7
- <% end -%>
8
-
9
- <% for action in unscaffolded_actions -%>
10
- def <%= action %><%= suffix %>
11
- end
12
-
13
- <% end -%>
14
- def list<%= suffix %>
15
- @<%= singular_name %>_pages, @<%= plural_name %> = paginate :<%= plural_name %>, :per_page => 10
16
- end
17
-
18
- def show<%= suffix %>
19
- @<%= singular_name %> = <%= model_name %>.find(params[:id])
20
- end
21
-
22
- def new<%= suffix %>
23
- @<%= singular_name %> = <%= model_name %>.new
24
- end
25
-
26
- def create<%= suffix %>
27
- @<%= singular_name %> = <%= model_name %>.new(params[:<%= singular_name %>])
28
- if @<%= singular_name %>.save
29
- flash[:notice] = '<%= model_name %> was successfully created.'
30
- redirect_to :action => 'list<%= suffix %>'
31
- else
32
- render :action => 'new<%= suffix %>'
33
- end
34
- end
35
-
36
- def edit<%= suffix %>
37
- @<%= singular_name %> = <%= model_name %>.find(params[:id])
38
- end
39
-
40
- def update
41
- @<%= singular_name %> = <%= model_name %>.find(params[:id])
42
- if @<%= singular_name %>.update_attributes(params[:<%= singular_name %>])
43
- flash[:notice] = '<%= model_name %> was successfully updated.'
44
- redirect_to :action => 'show<%= suffix %>', :id => @<%= singular_name %>
45
- else
46
- render :action => 'edit<%= suffix %>'
47
- end
48
- end
49
-
50
- def destroy<%= suffix %>
51
- <%= model_name %>.find(params[:id]).destroy
52
- redirect_to :action => 'list<%= suffix %>'
53
- end
54
- end
@@ -1,3 +0,0 @@
1
- <%%= error_messages_for '<%= singular_name %>' %>
2
-
3
- <%= template_for_inclusion %>
@@ -1 +0,0 @@
1
- <%= all_input_tags(@model_instance, @singular_name, {}) %>
@@ -1,98 +0,0 @@
1
- require File.dirname(__FILE__) + '<%= "/.." * controller_class_nesting_depth %>/../test_helper'
2
- require '<%= controller_file_path %>_controller'
3
-
4
- # Re-raise errors caught by the controller.
5
- class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end
6
-
7
- class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase
8
- fixtures :<%= table_name %>
9
-
10
- def setup
11
- @controller = <%= controller_class_name %>Controller.new
12
- @request = ActionController::TestRequest.new
13
- @response = ActionController::TestResponse.new
14
- end
15
-
16
- <% for action in unscaffolded_actions -%>
17
- def test_<%= action %>
18
- get :<%= action %>
19
- assert_response :success
20
- assert_template '<%= action %>'
21
- end
22
-
23
- <% end -%>
24
- <% unless suffix -%>
25
- def test_index
26
- get :index
27
- assert_response :success
28
- assert_template 'list'
29
- end
30
-
31
- <% end -%>
32
- def test_list<%= suffix %>
33
- get :list<%= suffix %>
34
-
35
- assert_response :success
36
- assert_template 'list<%= suffix %>'
37
-
38
- assert_not_nil assigns(:<%= plural_name %>)
39
- end
40
-
41
- def test_show<%= suffix %>
42
- get :show<%= suffix %>, :id => 1
43
-
44
- assert_response :success
45
- assert_template 'show'
46
-
47
- assert_not_nil assigns(:<%= singular_name %>)
48
- assert assigns(:<%= singular_name %>).valid?
49
- end
50
-
51
- def test_new<%= suffix %>
52
- get :new<%= suffix %>
53
-
54
- assert_response :success
55
- assert_template 'new<%= suffix %>'
56
-
57
- assert_not_nil assigns(:<%= singular_name %>)
58
- end
59
-
60
- def test_create
61
- num_<%= plural_name %> = <%= model_name %>.count
62
-
63
- post :create<%= suffix %>, :<%= singular_name %> => {}
64
-
65
- assert_response :redirect
66
- assert_redirected_to :action => 'list<%= suffix %>'
67
-
68
- assert_equal num_<%= plural_name %> + 1, <%= model_name %>.count
69
- end
70
-
71
- def test_edit<%= suffix %>
72
- get :edit<%= suffix %>, :id => 1
73
-
74
- assert_response :success
75
- assert_template 'edit<%= suffix %>'
76
-
77
- assert_not_nil assigns(:<%= singular_name %>)
78
- assert assigns(:<%= singular_name %>).valid?
79
- end
80
-
81
- def test_update<%= suffix %>
82
- post :update<%= suffix %>, :id => 1
83
- assert_response :redirect
84
- assert_redirected_to :action => 'show<%= suffix %>', :id => 1
85
- end
86
-
87
- def test_destroy<%= suffix %>
88
- assert_not_nil <%= model_name %>.find(1)
89
-
90
- post :destroy, :id => 1
91
- assert_response :redirect
92
- assert_redirected_to :action => 'list<%= suffix %>'
93
-
94
- assert_raise(ActiveRecord::RecordNotFound) {
95
- <%= model_name %>.find(1)
96
- }
97
- end
98
- end
@@ -1,2 +0,0 @@
1
- module <%= controller_class_name %>Helper
2
- end
@@ -1,13 +0,0 @@
1
- <html>
2
- <head>
3
- <title><%= controller_class_name %>: <%%= controller.action_name %></title>
4
- <%%= stylesheet_link_tag 'scaffold' %>
5
- </head>
6
- <body>
7
-
8
- <p style="color: green"><%%= flash[:notice] %></p>
9
-
10
- <%%= @content_for_layout %>
11
-
12
- </body>
13
- </html>
@@ -1,74 +0,0 @@
1
- body { background-color: #fff; color: #333; }
2
-
3
- body, p, ol, ul, td {
4
- font-family: verdana, arial, helvetica, sans-serif;
5
- font-size: 13px;
6
- line-height: 18px;
7
- }
8
-
9
- pre {
10
- background-color: #eee;
11
- padding: 10px;
12
- font-size: 11px;
13
- }
14
-
15
- a { color: #000; }
16
- a:visited { color: #666; }
17
- a:hover { color: #fff; background-color:#000; }
18
-
19
- .fieldWithErrors {
20
- padding: 2px;
21
- background-color: red;
22
- display: table;
23
- }
24
-
25
- #ErrorExplanation {
26
- width: 400px;
27
- border: 2px solid red;
28
- padding: 7px;
29
- padding-bottom: 12px;
30
- margin-bottom: 20px;
31
- background-color: #f0f0f0;
32
- }
33
-
34
- #ErrorExplanation h2 {
35
- text-align: left;
36
- font-weight: bold;
37
- padding: 5px 5px 5px 15px;
38
- font-size: 12px;
39
- margin: -7px;
40
- background-color: #c00;
41
- color: #fff;
42
- }
43
-
44
- #ErrorExplanation p {
45
- color: #333;
46
- margin-bottom: 0;
47
- padding: 5px;
48
- }
49
-
50
- #ErrorExplanation ul li {
51
- font-size: 12px;
52
- list-style: square;
53
- }
54
-
55
- div.uploadStatus {
56
- margin: 5px;
57
- }
58
-
59
- div.progressBar {
60
- margin: 5px;
61
- }
62
-
63
- div.progressBar div.border {
64
- background-color: #fff;
65
- border: 1px solid grey;
66
- width: 100%;
67
- }
68
-
69
- div.progressBar div.background {
70
- background-color: #333;
71
- height: 18px;
72
- width: 0%;
73
- }
74
-
@@ -1,9 +0,0 @@
1
- <h1>Editing <%= singular_name %></h1>
2
-
3
- <%%= start_form_tag :action => 'update<%= @suffix %>', :id => @<%= singular_name %> %>
4
- <%%= render :partial => 'form' %>
5
- <%%= submit_tag 'Edit' %>
6
- <%%= end_form_tag %>
7
-
8
- <%%= link_to 'Show', :action => 'show<%= suffix %>', :id => @<%= singular_name %> %> |
9
- <%%= link_to 'Back', :action => 'list<%= suffix %>' %>
@@ -1,27 +0,0 @@
1
- <h1>Listing <%= plural_name %></h1>
2
-
3
- <table>
4
- <tr>
5
- <%% for column in <%= model_name %>.content_columns %>
6
- <th><%%= column.human_name %></th>
7
- <%% end %>
8
- </tr>
9
-
10
- <%% for <%= singular_name %> in @<%= plural_name %> %>
11
- <tr>
12
- <%% for column in <%= model_name %>.content_columns %>
13
- <td><%%=h <%= singular_name %>.send(column.name) %></td>
14
- <%% end %>
15
- <td><%%= link_to 'Show', :action => 'show<%= suffix %>', :id => <%= singular_name %> %></td>
16
- <td><%%= link_to 'Edit', :action => 'edit<%= suffix %>', :id => <%= singular_name %> %></td>
17
- <td><%%= link_to 'Destroy', { :action => 'destroy<%= suffix %>', :id => <%= singular_name %> }, :confirm => 'Are you sure?' %></td>
18
- </tr>
19
- <%% end %>
20
- </table>
21
-
22
- <%%= link_to 'Previous page', { :page => @<%= singular_name %>_pages.current.previous } if @<%= singular_name %>_pages.current.previous %>
23
- <%%= link_to 'Next page', { :page => @<%= singular_name %>_pages.current.next } if @<%= singular_name %>_pages.current.next %>
24
-
25
- <br />
26
-
27
- <%%= link_to 'New <%= singular_name %>', :action => 'new<%= suffix %>' %>
@@ -1,8 +0,0 @@
1
- <h1>New <%= singular_name %></h1>
2
-
3
- <%%= start_form_tag :action => 'create<%= @suffix %>' %>
4
- <%%= render :partial => 'form' %>
5
- <%%= submit_tag "Create" %>
6
- <%%= end_form_tag %>
7
-
8
- <%%= link_to 'Back', :action => 'list<%= suffix %>' %>
@@ -1,8 +0,0 @@
1
- <%% for column in <%= model_name %>.content_columns %>
2
- <p>
3
- <b><%%= column.human_name %>:</b> <%%=h @<%= singular_name %>.send(column.name) %>
4
- </p>
5
- <%% end %>
6
-
7
- <%%= link_to 'Edit', :action => 'edit<%= suffix %>', :id => @<%= singular_name %> %> |
8
- <%%= link_to 'Back', :action => 'list<%= suffix %>' %>
@@ -1,15 +0,0 @@
1
- Description:
2
- The session table migration generator creates a migration for adding a session table
3
- used by CGI::Session::ActiveRecordStore.
4
-
5
- The generator takes a migration name as its argument. The migration name may be
6
- given in CamelCase or under_score.
7
-
8
- The generator creates a migration class in db/migrate prefixed by its number
9
- in the queue.
10
-
11
- Example:
12
- ./script/generate session_migration AddSessionTable
13
-
14
- With 4 existing migrations, this will create an AddSessionTable migration in the
15
- file db/migrate/5_add_session_table.rb
@@ -1,12 +0,0 @@
1
- class SessionMigrationGenerator < Rails::Generator::NamedBase
2
- def initialize(runtime_args, runtime_options = {})
3
- runtime_args << 'add_session_table' if runtime_args.empty?
4
- super
5
- end
6
-
7
- def manifest
8
- record do |m|
9
- m.migration_template 'migration.rb', 'db/migrate'
10
- end
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- class <%= class_name %> < ActiveRecord::Migration
2
- def self.up
3
- create_table :sessions do |t|
4
- t.column :session_id, :string
5
- t.column :data, :text
6
- t.column :updated_at, :datetime
7
- end
8
-
9
- add_index :sessions, :session_id
10
- end
11
-
12
- def self.down
13
- drop_table :sessions
14
- end
15
- end
@@ -1,28 +0,0 @@
1
- Description:
2
- The web service generator creates the controller and API definition for
3
- a web service.
4
-
5
- The generator takes a web service name and a list of API methods as arguments.
6
- The web service name may be given in CamelCase or under_score and should
7
- contain no extra suffixes. To create a web service within a
8
- module, specify the web service name as 'module/webservice'.
9
-
10
- The generator creates a controller class in app/controllers, an API definition
11
- in app/apis, and a functional test suite in test/functional.
12
-
13
- Example:
14
- ./script/generate web_service User add edit list remove
15
-
16
- User web service.
17
- Controller: app/controllers/user_controller.rb
18
- API: app/apis/user_api.rb
19
- Test: test/functional/user_api_test.rb
20
-
21
- Modules Example:
22
- ./script/generate web_service 'api/registration' register renew
23
-
24
- Registration web service.
25
- Controller: app/controllers/api/registration_controller.rb
26
- API: app/apis/api/registration_api.rb
27
- Test: test/functional/api/registration_api_test.rb
28
-
@@ -1,5 +0,0 @@
1
- class <%= class_name %>Api < ActionWebService::API::Base
2
- <% for method_name in args -%>
3
- api_method :<%= method_name %>
4
- <% end -%>
5
- end
@@ -1,8 +0,0 @@
1
- class <%= class_name %>Controller < ApplicationController
2
- wsdl_service_name '<%= class_name %>'
3
- <% for method_name in args -%>
4
-
5
- def <%= method_name %>
6
- end
7
- <% end -%>
8
- end
@@ -1,19 +0,0 @@
1
- require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
- require '<%= file_path %>_controller'
3
-
4
- class <%= class_name %>Controller; def rescue_action(e) raise e end; end
5
-
6
- class <%= class_name %>ControllerApiTest < Test::Unit::TestCase
7
- def setup
8
- @controller = <%= class_name %>Controller.new
9
- @request = ActionController::TestRequest.new
10
- @response = ActionController::TestResponse.new
11
- end
12
- <% for method_name in args -%>
13
-
14
- def test_<%= method_name %>
15
- result = invoke :<%= method_name %>
16
- assert_equal nil, result
17
- end
18
- <% end -%>
19
- end
@@ -1,29 +0,0 @@
1
- class WebServiceGenerator < Rails::Generator::NamedBase
2
- def manifest
3
- record do |m|
4
- # Check for class naming collisions.
5
- m.class_collisions class_path, "#{class_name}Api", "#{class_name}Controller", "#{class_name}ApiTest"
6
-
7
- # API and test directories.
8
- m.directory File.join('app/apis', class_path)
9
- m.directory File.join('app/controllers', class_path)
10
- m.directory File.join('test/functional', class_path)
11
-
12
- # API definition, controller, and functional test.
13
- m.template 'api_definition.rb',
14
- File.join('app/apis',
15
- class_path,
16
- "#{file_name}_api.rb")
17
-
18
- m.template 'controller.rb',
19
- File.join('app/controllers',
20
- class_path,
21
- "#{file_name}_controller.rb")
22
-
23
- m.template 'functional_test.rb',
24
- File.join('test/functional',
25
- class_path,
26
- "#{file_name}_api_test.rb")
27
- end
28
- end
29
- end
@@ -1,210 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec'
2
-
3
- class Object
4
- class << self
5
- # Lookup missing generators using const_missing. This allows any
6
- # generator to reference another without having to know its location:
7
- # RubyGems, ~/.rails/generators, and RAILS_ROOT/generators.
8
- def lookup_missing_generator(class_id)
9
- if md = /(.+)Generator$/.match(class_id.to_s)
10
- name = md.captures.first.demodulize.underscore
11
- Rails::Generator::Base.lookup(name).klass
12
- else
13
- const_missing_before_generators(class_id)
14
- end
15
- end
16
-
17
- unless respond_to?(:const_missing_before_generators)
18
- alias_method :const_missing_before_generators, :const_missing
19
- alias_method :const_missing, :lookup_missing_generator
20
- end
21
- end
22
- end
23
-
24
- # User home directory lookup adapted from RubyGems.
25
- def Dir.user_home
26
- if ENV['HOME']
27
- ENV['HOME']
28
- elsif ENV['USERPROFILE']
29
- ENV['USERPROFILE']
30
- elsif ENV['HOMEDRIVE'] and ENV['HOMEPATH']
31
- "#{ENV['HOMEDRIVE']}:#{ENV['HOMEPATH']}"
32
- else
33
- File.expand_path '~'
34
- end
35
- end
36
-
37
-
38
- module Rails
39
- module Generator
40
-
41
- # Generator lookup is managed by a list of sources which return specs
42
- # describing where to find and how to create generators. This module
43
- # provides class methods for manipulating the source list and looking up
44
- # generator specs, and an #instance wrapper for quickly instantiating
45
- # generators by name.
46
- #
47
- # A spec is not a generator: it's a description of where to find
48
- # the generator and how to create it. A source is anything that
49
- # yields generators from #each. PathSource and GemSource are provided.
50
- module Lookup
51
- def self.append_features(base)
52
- super
53
- base.extend(ClassMethods)
54
- base.use_component_sources!
55
- end
56
-
57
- # Convenience method to instantiate another generator.
58
- def instance(generator_name, args, runtime_options = {})
59
- self.class.instance(generator_name, args, runtime_options)
60
- end
61
-
62
- module ClassMethods
63
- # The list of sources where we look, in order, for generators.
64
- def sources
65
- read_inheritable_attribute(:sources) or use_component_sources!
66
- end
67
-
68
- # Add a source to the end of the list.
69
- def append_sources(*args)
70
- sources.concat(args.flatten)
71
- invalidate_cache!
72
- end
73
-
74
- # Add a source to the beginning of the list.
75
- def prepend_sources(*args)
76
- write_inheritable_array(:sources, args.flatten + sources)
77
- invalidate_cache!
78
- end
79
-
80
- # Reset the source list.
81
- def reset_sources
82
- write_inheritable_attribute(:sources, [])
83
- invalidate_cache!
84
- end
85
-
86
- # Use application generators (app, ?).
87
- def use_application_sources!
88
- reset_sources
89
- sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/applications")
90
- end
91
-
92
- # Use component generators (model, controller, etc).
93
- # 1. Rails application. If RAILS_ROOT is defined we know we're
94
- # generating in the context of a Rails application, so search
95
- # RAILS_ROOT/generators.
96
- # 2. User home directory. Search ~/.rails/generators.
97
- # 3. RubyGems. Search for gems named *_generator.
98
- # 4. Builtins. Model, controller, mailer, scaffold.
99
- def use_component_sources!
100
- reset_sources
101
- if defined? ::RAILS_ROOT
102
- sources << PathSource.new(:lib, "#{::RAILS_ROOT}/lib/generators")
103
- sources << PathSource.new(:vendor, "#{::RAILS_ROOT}/vendor/generators")
104
- sources << PathSource.new(:plugins, "#{::RAILS_ROOT}/vendor/plugins/**/generators")
105
- end
106
- sources << PathSource.new(:user, "#{Dir.user_home}/.rails/generators")
107
- sources << GemSource.new if Object.const_defined?(:Gem)
108
- sources << PathSource.new(:builtin, "#{File.dirname(__FILE__)}/generators/components")
109
- end
110
-
111
- # Lookup knows how to find generators' Specs from a list of Sources.
112
- # Searches the sources, in order, for the first matching name.
113
- def lookup(generator_name)
114
- @found ||= {}
115
- generator_name = generator_name.to_s.downcase
116
- @found[generator_name] ||= cache.find { |spec| spec.name == generator_name }
117
- unless @found[generator_name]
118
- chars = generator_name.scan(/./).map{|c|"#{c}.*?"}
119
- rx = /^#{chars}$/
120
- gns = cache.select{|spec| spec.name =~ rx }
121
- @found[generator_name] ||= gns.first if gns.length == 1
122
- raise GeneratorError, "Pattern '#{generator_name}' matches more than one generator: #{gns.map{|sp|sp.name}.join(', ')}" if gns.length > 1
123
- end
124
- @found[generator_name] or raise GeneratorError, "Couldn't find '#{generator_name}' generator"
125
- end
126
-
127
- # Convenience method to lookup and instantiate a generator.
128
- def instance(generator_name, args = [], runtime_options = {})
129
- lookup(generator_name).klass.new(args, full_options(runtime_options))
130
- end
131
-
132
- private
133
- # Lookup and cache every generator from the source list.
134
- def cache
135
- @cache ||= sources.inject([]) { |cache, source| cache + source.map }
136
- end
137
-
138
- # Clear the cache whenever the source list changes.
139
- def invalidate_cache!
140
- @cache = nil
141
- end
142
- end
143
- end
144
-
145
- # Sources enumerate (yield from #each) generator specs which describe
146
- # where to find and how to create generators. Enumerable is mixed in so,
147
- # for example, source.collect will retrieve every generator.
148
- # Sources may be assigned a label to distinguish them.
149
- class Source
150
- include Enumerable
151
-
152
- attr_reader :label
153
- def initialize(label)
154
- @label = label
155
- end
156
-
157
- # The each method must be implemented in subclasses.
158
- # The base implementation raises an error.
159
- def each
160
- raise NotImplementedError
161
- end
162
-
163
- # Return a convenient sorted list of all generator names.
164
- def names
165
- map { |spec| spec.name }.sort
166
- end
167
- end
168
-
169
-
170
- # PathSource looks for generators in a filesystem directory.
171
- class PathSource < Source
172
- attr_reader :path
173
-
174
- def initialize(label, path)
175
- super label
176
- @path = path
177
- end
178
-
179
- # Yield each eligible subdirectory.
180
- def each
181
- Dir["#{path}/[a-z]*"].each do |dir|
182
- if File.directory?(dir)
183
- yield Spec.new(File.basename(dir), dir, label)
184
- end
185
- end
186
- end
187
- end
188
-
189
-
190
- # GemSource hits the mines to quarry for generators. The latest versions
191
- # of gems named *_generator are selected.
192
- class GemSource < Source
193
- def initialize
194
- super :RubyGems
195
- end
196
-
197
- # Yield latest versions of generator gems.
198
- def each
199
- Gem::cache.search(/_generator$/).inject({}) { |latest, gem|
200
- hem = latest[gem.name]
201
- latest[gem.name] = gem if hem.nil? or gem.version > hem.version
202
- latest
203
- }.values.each { |gem|
204
- yield Spec.new(gem.name.sub(/_generator$/, ''), gem.full_gem_path, label)
205
- }
206
- end
207
- end
208
-
209
- end
210
- end