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.
- checksums.yaml +7 -0
- data/README.md +103 -0
- metadata +228 -294
- data/CHANGELOG +0 -865
- data/MIT-LICENSE +0 -20
- data/README +0 -153
- data/Rakefile +0 -422
- data/bin/about +0 -3
- data/bin/breakpointer +0 -3
- data/bin/console +0 -3
- data/bin/destroy +0 -3
- data/bin/generate +0 -3
- data/bin/performance/benchmarker +0 -3
- data/bin/performance/profiler +0 -3
- data/bin/plugin +0 -3
- data/bin/process/reaper +0 -3
- data/bin/process/spawner +0 -3
- data/bin/process/spinner +0 -3
- data/bin/rails +0 -21
- data/bin/runner +0 -3
- data/bin/server +0 -3
- data/builtin/controllers/rails_info_controller.rb +0 -11
- data/configs/apache.conf +0 -40
- data/configs/database.yml +0 -85
- data/configs/empty.log +0 -0
- data/configs/lighttpd.conf +0 -40
- data/configs/routes.rb +0 -19
- data/dispatches/dispatch.fcgi +0 -24
- data/dispatches/dispatch.rb +0 -10
- data/dispatches/gateway.cgi +0 -97
- data/doc/README_FOR_APP +0 -2
- data/environments/boot.rb +0 -19
- data/environments/development.rb +0 -19
- data/environments/environment.rb +0 -53
- data/environments/production.rb +0 -19
- data/environments/test.rb +0 -19
- data/fresh_rakefile +0 -10
- data/helpers/application.rb +0 -4
- data/helpers/application_helper.rb +0 -3
- data/helpers/test_helper.rb +0 -28
- data/html/404.html +0 -8
- data/html/500.html +0 -8
- data/html/favicon.ico +0 -0
- data/html/images/rails.png +0 -0
- data/html/index.html +0 -277
- data/html/javascripts/controls.js +0 -750
- data/html/javascripts/dragdrop.js +0 -584
- data/html/javascripts/effects.js +0 -854
- data/html/javascripts/prototype.js +0 -1785
- data/html/robots.txt +0 -1
- data/lib/binding_of_caller.rb +0 -85
- data/lib/breakpoint.rb +0 -523
- data/lib/breakpoint_client.rb +0 -196
- data/lib/code_statistics.rb +0 -107
- data/lib/commands/about.rb +0 -2
- data/lib/commands/breakpointer.rb +0 -1
- data/lib/commands/console.rb +0 -23
- data/lib/commands/destroy.rb +0 -6
- data/lib/commands/generate.rb +0 -6
- data/lib/commands/ncgi/listener +0 -86
- data/lib/commands/ncgi/tracker +0 -69
- data/lib/commands/performance/benchmarker.rb +0 -24
- data/lib/commands/performance/profiler.rb +0 -34
- data/lib/commands/plugin.rb +0 -823
- data/lib/commands/process/reaper.rb +0 -130
- data/lib/commands/process/spawner.rb +0 -52
- data/lib/commands/process/spinner.rb +0 -57
- data/lib/commands/runner.rb +0 -27
- data/lib/commands/server.rb +0 -28
- data/lib/commands/servers/lighttpd.rb +0 -60
- data/lib/commands/servers/webrick.rb +0 -59
- data/lib/commands/update.rb +0 -4
- data/lib/commands.rb +0 -17
- data/lib/console_sandbox.rb +0 -6
- data/lib/dispatcher.rb +0 -99
- data/lib/fcgi_handler.rb +0 -189
- data/lib/initializer.rb +0 -553
- data/lib/rails_generator/base.rb +0 -203
- data/lib/rails_generator/commands.rb +0 -509
- data/lib/rails_generator/generators/applications/app/USAGE +0 -16
- data/lib/rails_generator/generators/applications/app/app_generator.rb +0 -140
- data/lib/rails_generator/generators/components/controller/USAGE +0 -30
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +0 -38
- data/lib/rails_generator/generators/components/controller/templates/controller.rb +0 -10
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +0 -18
- data/lib/rails_generator/generators/components/controller/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/controller/templates/view.rhtml +0 -2
- data/lib/rails_generator/generators/components/mailer/USAGE +0 -18
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +0 -32
- data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +0 -3
- data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +0 -13
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +0 -37
- data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +0 -3
- data/lib/rails_generator/generators/components/migration/USAGE +0 -14
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +0 -7
- data/lib/rails_generator/generators/components/migration/templates/migration.rb +0 -7
- data/lib/rails_generator/generators/components/model/USAGE +0 -17
- data/lib/rails_generator/generators/components/model/model_generator.rb +0 -18
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +0 -5
- data/lib/rails_generator/generators/components/model/templates/model.rb +0 -2
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +0 -10
- data/lib/rails_generator/generators/components/plugin/USAGE +0 -33
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +0 -33
- data/lib/rails_generator/generators/components/plugin/templates/README +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +0 -22
- data/lib/rails_generator/generators/components/plugin/templates/USAGE +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/generator.rb +0 -8
- data/lib/rails_generator/generators/components/plugin/templates/init.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +0 -1
- data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +0 -4
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +0 -8
- data/lib/rails_generator/generators/components/scaffold/USAGE +0 -32
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +0 -184
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +0 -54
- data/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +0 -3
- data/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +0 -1
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +0 -98
- data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +0 -2
- data/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +0 -13
- data/lib/rails_generator/generators/components/scaffold/templates/style.css +0 -74
- data/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +0 -9
- data/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +0 -27
- data/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +0 -8
- data/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +0 -8
- data/lib/rails_generator/generators/components/session_migration/USAGE +0 -15
- data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +0 -12
- data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +0 -15
- data/lib/rails_generator/generators/components/web_service/USAGE +0 -28
- data/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +0 -5
- data/lib/rails_generator/generators/components/web_service/templates/controller.rb +0 -8
- data/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +0 -19
- data/lib/rails_generator/generators/components/web_service/web_service_generator.rb +0 -29
- data/lib/rails_generator/lookup.rb +0 -210
- data/lib/rails_generator/manifest.rb +0 -53
- data/lib/rails_generator/options.rb +0 -140
- data/lib/rails_generator/scripts/destroy.rb +0 -7
- data/lib/rails_generator/scripts/generate.rb +0 -7
- data/lib/rails_generator/scripts/update.rb +0 -12
- data/lib/rails_generator/scripts.rb +0 -83
- data/lib/rails_generator/simple_logger.rb +0 -46
- data/lib/rails_generator/spec.rb +0 -44
- data/lib/rails_generator.rb +0 -43
- data/lib/rails_info.rb +0 -104
- data/lib/rails_version.rb +0 -9
- data/lib/railties_path.rb +0 -1
- data/lib/rubyprof_ext.rb +0 -35
- data/lib/tasks/databases.rake +0 -158
- data/lib/tasks/documentation.rake +0 -76
- data/lib/tasks/framework.rake +0 -71
- data/lib/tasks/javascripts.rake +0 -6
- data/lib/tasks/misc.rake +0 -19
- data/lib/tasks/rails.rb +0 -8
- data/lib/tasks/statistics.rake +0 -16
- data/lib/tasks/testing.rake +0 -50
- data/lib/test_help.rb +0 -17
- 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 +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,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
|
-
<%% 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
|
data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb
DELETED
@@ -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,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
|