authorails 1.0.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.
- data/AUTHORAILS_README +20 -0
- data/CHANGELOG +1366 -0
- data/MIT-LICENSE +20 -0
- data/README +182 -0
- data/Rakefile +334 -0
- data/bin/about +3 -0
- data/bin/authorails +19 -0
- data/bin/breakpointer +3 -0
- data/bin/console +3 -0
- data/bin/destroy +3 -0
- data/bin/generate +3 -0
- data/bin/performance/benchmarker +3 -0
- data/bin/performance/profiler +3 -0
- data/bin/plugin +3 -0
- data/bin/process/inspector +3 -0
- data/bin/process/reaper +3 -0
- data/bin/process/spawner +3 -0
- data/bin/runner +3 -0
- data/bin/server +3 -0
- data/builtin/rails_info/rails/info.rb +123 -0
- data/builtin/rails_info/rails/info_controller.rb +9 -0
- data/builtin/rails_info/rails/info_helper.rb +2 -0
- data/builtin/rails_info/rails_info_controller.rb +2 -0
- data/configs/apache.conf +40 -0
- data/configs/databases/frontbase.yml +28 -0
- data/configs/databases/mysql.yml +48 -0
- data/configs/databases/oracle.yml +39 -0
- data/configs/databases/postgresql.yml +44 -0
- data/configs/databases/sqlite2.yml +16 -0
- data/configs/databases/sqlite3.yml +19 -0
- data/configs/empty.log +0 -0
- data/configs/lighttpd.conf +54 -0
- data/configs/routes.rb +23 -0
- data/controllers/accounts_controller.rb +11 -0
- data/controllers/admin_controller.rb +76 -0
- data/controllers/begin_controller.rb +5 -0
- data/controllers/login_controller.rb +101 -0
- data/controllers/permission_controller.rb +91 -0
- data/controllers/roles_controller.rb +58 -0
- data/controllers/tables_controller.rb +714 -0
- data/dispatches/dispatch.fcgi +24 -0
- data/dispatches/dispatch.rb +10 -0
- data/dispatches/gateway.cgi +97 -0
- data/doc/README_FOR_APP +2 -0
- data/environments/boot.rb +45 -0
- data/environments/development.rb +21 -0
- data/environments/environment.rb +63 -0
- data/environments/production.rb +18 -0
- data/environments/test.rb +19 -0
- data/fresh_rakefile +10 -0
- data/helpers/application.rb +607 -0
- data/helpers/application_helper.rb +315 -0
- data/helpers/permission_helper.rb +27 -0
- data/helpers/test_helper.rb +28 -0
- data/html/404.html +30 -0
- data/html/500.html +30 -0
- data/html/favicon.ico +0 -0
- data/html/images/ArrowDn.png +0 -0
- data/html/images/ArrowUp.png +0 -0
- data/html/images/arrow.gif +0 -0
- data/html/images/authorails_logo.gif +0 -0
- data/html/images/delete.png +0 -0
- data/html/images/edit.png +0 -0
- data/html/images/minus.gif +0 -0
- data/html/images/plus.gif +0 -0
- data/html/images/rails.png +0 -0
- data/html/images/show.png +0 -0
- data/html/images/spinner.gif +0 -0
- data/html/index.html +273 -0
- data/html/javascripts/application.js +2 -0
- data/html/javascripts/controls.js +833 -0
- data/html/javascripts/dragdrop.js +942 -0
- data/html/javascripts/effects.js +1088 -0
- data/html/javascripts/live_validation.js +4 -0
- data/html/javascripts/prototype.js +2515 -0
- data/html/robots.txt +1 -0
- data/lib/authorails/version.rb +9 -0
- data/lib/binding_of_caller.rb +85 -0
- data/lib/breakpoint.rb +553 -0
- data/lib/breakpoint_client.rb +196 -0
- data/lib/code_statistics.rb +107 -0
- data/lib/commands.rb +17 -0
- data/lib/commands/about.rb +2 -0
- data/lib/commands/breakpointer.rb +1 -0
- data/lib/commands/console.rb +25 -0
- data/lib/commands/destroy.rb +6 -0
- data/lib/commands/generate.rb +6 -0
- data/lib/commands/ncgi/listener +86 -0
- data/lib/commands/ncgi/tracker +69 -0
- data/lib/commands/performance/benchmarker.rb +24 -0
- data/lib/commands/performance/profiler.rb +50 -0
- data/lib/commands/plugin.rb +918 -0
- data/lib/commands/process/inspector.rb +68 -0
- data/lib/commands/process/reaper.rb +149 -0
- data/lib/commands/process/spawner.rb +209 -0
- data/lib/commands/process/spinner.rb +57 -0
- data/lib/commands/runner.rb +48 -0
- data/lib/commands/server.rb +39 -0
- data/lib/commands/servers/base.rb +19 -0
- data/lib/commands/servers/lighttpd.rb +94 -0
- data/lib/commands/servers/mongrel.rb +65 -0
- data/lib/commands/servers/webrick.rb +59 -0
- data/lib/commands/update.rb +4 -0
- data/lib/console_app.rb +27 -0
- data/lib/console_sandbox.rb +6 -0
- data/lib/console_with_helpers.rb +23 -0
- data/lib/dispatcher.rb +173 -0
- data/lib/fcgi_handler.rb +225 -0
- data/lib/initializer.rb +702 -0
- data/lib/rails_generator.rb +43 -0
- data/lib/rails_generator/base.rb +261 -0
- data/lib/rails_generator/commands.rb +581 -0
- data/lib/rails_generator/generated_attribute.rb +42 -0
- data/lib/rails_generator/generators/applications/app/USAGE +16 -0
- data/lib/rails_generator/generators/applications/app/app_generator.rb +341 -0
- data/lib/rails_generator/generators/components/controller/USAGE +30 -0
- data/lib/rails_generator/generators/components/controller/controller_generator.rb +37 -0
- data/lib/rails_generator/generators/components/controller/templates/controller.rb +10 -0
- data/lib/rails_generator/generators/components/controller/templates/functional_test.rb +18 -0
- data/lib/rails_generator/generators/components/controller/templates/helper.rb +2 -0
- data/lib/rails_generator/generators/components/controller/templates/view.rhtml +2 -0
- data/lib/rails_generator/generators/components/integration_test/USAGE +14 -0
- data/lib/rails_generator/generators/components/integration_test/integration_test_generator.rb +16 -0
- data/lib/rails_generator/generators/components/integration_test/templates/integration_test.rb +10 -0
- data/lib/rails_generator/generators/components/mailer/USAGE +18 -0
- data/lib/rails_generator/generators/components/mailer/mailer_generator.rb +34 -0
- data/lib/rails_generator/generators/components/mailer/templates/fixture.rhtml +3 -0
- data/lib/rails_generator/generators/components/mailer/templates/mailer.rb +13 -0
- data/lib/rails_generator/generators/components/mailer/templates/unit_test.rb +37 -0
- data/lib/rails_generator/generators/components/mailer/templates/view.rhtml +3 -0
- data/lib/rails_generator/generators/components/migration/USAGE +14 -0
- data/lib/rails_generator/generators/components/migration/migration_generator.rb +7 -0
- data/lib/rails_generator/generators/components/migration/templates/migration.rb +7 -0
- data/lib/rails_generator/generators/components/model/USAGE +26 -0
- data/lib/rails_generator/generators/components/model/model_generator.rb +38 -0
- data/lib/rails_generator/generators/components/model/templates/fixtures.yml +11 -0
- data/lib/rails_generator/generators/components/model/templates/migration.rb +13 -0
- data/lib/rails_generator/generators/components/model/templates/model.rb +2 -0
- data/lib/rails_generator/generators/components/model/templates/unit_test.rb +10 -0
- data/lib/rails_generator/generators/components/observer/USAGE +15 -0
- data/lib/rails_generator/generators/components/observer/observer_generator.rb +16 -0
- data/lib/rails_generator/generators/components/observer/templates/observer.rb +2 -0
- data/lib/rails_generator/generators/components/observer/templates/unit_test.rb +10 -0
- data/lib/rails_generator/generators/components/plugin/USAGE +35 -0
- data/lib/rails_generator/generators/components/plugin/plugin_generator.rb +38 -0
- data/lib/rails_generator/generators/components/plugin/templates/README +4 -0
- data/lib/rails_generator/generators/components/plugin/templates/Rakefile +22 -0
- data/lib/rails_generator/generators/components/plugin/templates/USAGE +8 -0
- data/lib/rails_generator/generators/components/plugin/templates/generator.rb +8 -0
- data/lib/rails_generator/generators/components/plugin/templates/init.rb +1 -0
- data/lib/rails_generator/generators/components/plugin/templates/install.rb +1 -0
- data/lib/rails_generator/generators/components/plugin/templates/plugin.rb +1 -0
- data/lib/rails_generator/generators/components/plugin/templates/tasks.rake +4 -0
- data/lib/rails_generator/generators/components/plugin/templates/uninstall.rb +1 -0
- data/lib/rails_generator/generators/components/plugin/templates/unit_test.rb +8 -0
- data/lib/rails_generator/generators/components/resource/resource_generator.rb +76 -0
- data/lib/rails_generator/generators/components/resource/templates/USAGE +18 -0
- data/lib/rails_generator/generators/components/resource/templates/controller.rb +2 -0
- data/lib/rails_generator/generators/components/resource/templates/fixtures.yml +11 -0
- data/lib/rails_generator/generators/components/resource/templates/functional_test.rb +20 -0
- data/lib/rails_generator/generators/components/resource/templates/helper.rb +2 -0
- data/lib/rails_generator/generators/components/resource/templates/migration.rb +13 -0
- data/lib/rails_generator/generators/components/resource/templates/model.rb +2 -0
- data/lib/rails_generator/generators/components/resource/templates/unit_test.rb +10 -0
- data/lib/rails_generator/generators/components/scaffold/USAGE +32 -0
- data/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +208 -0
- data/lib/rails_generator/generators/components/scaffold/templates/controller.rb +134 -0
- data/lib/rails_generator/generators/components/scaffold/templates/form.rhtml +3 -0
- data/lib/rails_generator/generators/components/scaffold/templates/form_scaffolding.rhtml +35 -0
- data/lib/rails_generator/generators/components/scaffold/templates/functional_test.rb +102 -0
- data/lib/rails_generator/generators/components/scaffold/templates/helper.rb +2 -0
- data/lib/rails_generator/generators/components/scaffold/templates/layout.rhtml +17 -0
- data/lib/rails_generator/generators/components/scaffold/templates/partial_list_elements.rhtml +127 -0
- data/lib/rails_generator/generators/components/scaffold/templates/style.css +74 -0
- data/lib/rails_generator/generators/components/scaffold/templates/view_edit.rhtml +75 -0
- data/lib/rails_generator/generators/components/scaffold/templates/view_list.rhtml +30 -0
- data/lib/rails_generator/generators/components/scaffold/templates/view_new.rhtml +8 -0
- data/lib/rails_generator/generators/components/scaffold/templates/view_show.rhtml +37 -0
- data/lib/rails_generator/generators/components/scaffold_resource/USAGE +29 -0
- data/lib/rails_generator/generators/components/scaffold_resource/scaffold_resource_generator.rb +92 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/controller.rb +79 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/fixtures.yml +11 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/functional_test.rb +57 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/helper.rb +2 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/layout.rhtml +17 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/migration.rb +13 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/model.rb +2 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/style.css +74 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/unit_test.rb +10 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/view_edit.rhtml +19 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/view_index.rhtml +24 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/view_new.rhtml +18 -0
- data/lib/rails_generator/generators/components/scaffold_resource/templates/view_show.rhtml +10 -0
- data/lib/rails_generator/generators/components/session_migration/USAGE +15 -0
- data/lib/rails_generator/generators/components/session_migration/session_migration_generator.rb +18 -0
- data/lib/rails_generator/generators/components/session_migration/templates/migration.rb +16 -0
- data/lib/rails_generator/generators/components/web_service/USAGE +28 -0
- data/lib/rails_generator/generators/components/web_service/templates/api_definition.rb +5 -0
- data/lib/rails_generator/generators/components/web_service/templates/controller.rb +8 -0
- data/lib/rails_generator/generators/components/web_service/templates/functional_test.rb +19 -0
- data/lib/rails_generator/generators/components/web_service/web_service_generator.rb +29 -0
- data/lib/rails_generator/lookup.rb +209 -0
- data/lib/rails_generator/manifest.rb +53 -0
- data/lib/rails_generator/options.rb +143 -0
- data/lib/rails_generator/scripts.rb +83 -0
- data/lib/rails_generator/scripts/destroy.rb +7 -0
- data/lib/rails_generator/scripts/generate.rb +7 -0
- data/lib/rails_generator/scripts/update.rb +12 -0
- data/lib/rails_generator/simple_logger.rb +46 -0
- data/lib/rails_generator/spec.rb +44 -0
- data/lib/railties_path.rb +1 -0
- data/lib/ruby_version_check.rb +17 -0
- data/lib/rubyprof_ext.rb +35 -0
- data/lib/tasks/databases.rake +187 -0
- data/lib/tasks/documentation.rake +82 -0
- data/lib/tasks/framework.rake +112 -0
- data/lib/tasks/log.rake +9 -0
- data/lib/tasks/misc.rake +4 -0
- data/lib/tasks/pre_namespace_aliases.rake +53 -0
- data/lib/tasks/rails.rb +8 -0
- data/lib/tasks/statistics.rake +18 -0
- data/lib/tasks/testing.rake +120 -0
- data/lib/tasks/tmp.rake +37 -0
- data/lib/test_help.rb +19 -0
- data/lib/webrick_server.rb +166 -0
- data/libs/migration_helper.rb +11 -0
- data/migrations/001_create_logins.rb +22 -0
- data/migrations/002_create_admins.rb +16 -0
- data/migrations/003_create_roles.rb +13 -0
- data/migrations/004_create_tables.rb +11 -0
- data/migrations/005_create_attr_types.rb +13 -0
- data/migrations/006_create_table_fields.rb +22 -0
- data/migrations/007_create_tab_operations.rb +13 -0
- data/migrations/008_create_attr_operations.rb +13 -0
- data/migrations/009_create_tab_permissions.rb +21 -0
- data/migrations/010_create_attr_permissions.rb +21 -0
- data/migrations/011_create_relations.rb +23 -0
- data/migrations/012_create_scaffolds.rb +11 -0
- data/migrations/013_create_relation_permissions.rb +20 -0
- data/models/admin.rb +38 -0
- data/models/attr_operation.rb +3 -0
- data/models/attr_permission.rb +5 -0
- data/models/attr_type.rb +3 -0
- data/models/login.rb +51 -0
- data/models/relation.rb +5 -0
- data/models/relation_permission.rb +4 -0
- data/models/role.rb +13 -0
- data/models/scaffold.rb +2 -0
- data/models/tab_operation.rb +3 -0
- data/models/tab_permission.rb +5 -0
- data/models/table.rb +18 -0
- data/models/table_field.rb +6 -0
- data/plugins/redhillonrails_core/CHANGELOG +186 -0
- data/plugins/redhillonrails_core/MIT-LICENSE +20 -0
- data/plugins/redhillonrails_core/README +152 -0
- data/plugins/redhillonrails_core/init.rb +1 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/base.rb +54 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +46 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/column.rb +21 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/foreign_key_definition.rb +26 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/index_definition.rb +11 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_adapter.rb +94 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/mysql_column.rb +8 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +131 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/schema_statements.rb +23 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter.rb +9 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/connection_adapters/table_definition.rb +27 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema.rb +25 -0
- data/plugins/redhillonrails_core/lib/red_hill_consulting/core/active_record/schema_dumper.rb +58 -0
- data/plugins/redhillonrails_core/lib/redhillonrails_core.rb +19 -0
- data/plugins/redhillonrails_core/tasks/db/comments.rake +9 -0
- data/plugins/schema_validations/CHANGELOG +149 -0
- data/plugins/schema_validations/MIT-LICENSE +20 -0
- data/plugins/schema_validations/README +54 -0
- data/plugins/schema_validations/about.yml +5 -0
- data/plugins/schema_validations/init.rb +1 -0
- data/plugins/schema_validations/install.rb +1 -0
- data/plugins/schema_validations/lib/red_hill_consulting/schema_validations/active_record/base.rb +108 -0
- data/plugins/schema_validations/lib/schema_validations.rb +1 -0
- data/plugins/svn/README +69 -0
- data/plugins/svn/Rakefile +22 -0
- data/plugins/svn/assets/javascripts/live_validation.js +4 -0
- data/plugins/svn/assets/stylesheets/live_validation.css +28 -0
- data/plugins/svn/init.rb +2 -0
- data/plugins/svn/install.rb +1 -0
- data/plugins/svn/lib/form_helpers.rb +49 -0
- data/plugins/svn/lib/live_validations.rb +73 -0
- data/plugins/svn/tasks/live_validation_tasks.rake +17 -0
- data/plugins/svn/test/form_helpers_test.rb +214 -0
- data/plugins/svn/test/live_validations_test.rb +124 -0
- data/plugins/svn/test/resource.rb +17 -0
- data/plugins/svn/uninstall.rb +1 -0
- data/stylesheets/live_validation.css +28 -0
- data/stylesheets/print.css +72 -0
- data/stylesheets/scaffold.css +175 -0
- data/views/accounts/index.rhtml +12 -0
- data/views/accounts/show.rhtml +5 -0
- data/views/admin/_form.rhtml +15 -0
- data/views/admin/add_user.rhtml +21 -0
- data/views/admin/change_pwd.rhtml +23 -0
- data/views/admin/edit_user.rhtml +12 -0
- data/views/admin/index.rhtml +19 -0
- data/views/begin/index.rhtml +0 -0
- data/views/layouts/general.rhtml +59 -0
- data/views/layouts/login.rhtml +18 -0
- data/views/login/change_pwd.rhtml +21 -0
- data/views/login/expired_pwd.rhtml +19 -0
- data/views/login/index.rhtml +15 -0
- data/views/permission/index.rhtml +17 -0
- data/views/permission/relations.rhtml +28 -0
- data/views/permission/roles.rhtml +45 -0
- data/views/permission/tables.rhtml +53 -0
- data/views/roles/_form.rhtml +8 -0
- data/views/roles/edit.rhtml +11 -0
- data/views/roles/list.rhtml +28 -0
- data/views/roles/new.rhtml +8 -0
- data/views/roles/show.rhtml +14 -0
- data/views/shared_views/_advanced_search.rhtml +35 -0
- data/views/shared_views/_child_elements.rhtml +30 -0
- data/views/shared_views/_childs.rhtml +20 -0
- data/views/shared_views/_father_elements.rhtml +27 -0
- data/views/shared_views/_fathers.rhtml +21 -0
- data/views/shared_views/_fathers_header.rhtml +58 -0
- data/views/shared_views/_many_to_many_elements.rhtml +50 -0
- data/views/shared_views/_many_to_manys.rhtml +18 -0
- data/views/shared_views/_one_to_one_elements.rhtml +24 -0
- data/views/shared_views/_one_to_one_father_elements.rhtml +26 -0
- data/views/shared_views/_one_to_ones.rhtml +42 -0
- data/views/shared_views/_one_to_ones_header.rhtml +117 -0
- data/views/shared_views/edit_child.rhtml +89 -0
- data/views/shared_views/edit_many.rhtml +75 -0
- data/views/tables/_cascade.rhtml +10 -0
- data/views/tables/_field.rhtml +10 -0
- data/views/tables/_fk.rhtml +9 -0
- data/views/tables/_form.rhtml +9 -0
- data/views/tables/_join_table_name.rhtml +16 -0
- data/views/tables/_relation_types.rhtml +5 -0
- data/views/tables/_tables.rhtml +15 -0
- data/views/tables/attributes.rhtml +15 -0
- data/views/tables/edit.rhtml +11 -0
- data/views/tables/edit_field.rhtml +18 -0
- data/views/tables/list.rhtml +39 -0
- data/views/tables/new.rhtml +8 -0
- data/views/tables/new_field.rhtml +25 -0
- data/views/tables/relations.rhtml +24 -0
- data/views/tables/show.rhtml +24 -0
- metadata +518 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rake/rdoctask'
|
|
4
|
+
|
|
5
|
+
desc 'Default: run unit tests.'
|
|
6
|
+
task :default => :test
|
|
7
|
+
|
|
8
|
+
desc 'Test the <%= file_name %> plugin.'
|
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
|
10
|
+
t.libs << 'lib'
|
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
|
12
|
+
t.verbose = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Generate documentation for the <%= file_name %> plugin.'
|
|
16
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
18
|
+
rdoc.title = '<%= class_name %>'
|
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
20
|
+
rdoc.rdoc_files.include('README')
|
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
22
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Include hook code here
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Install hook code here
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# <%= class_name %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Uninstall hook code here
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
class ResourceGenerator < Rails::Generator::NamedBase
|
|
2
|
+
attr_reader :controller_name,
|
|
3
|
+
:controller_class_path,
|
|
4
|
+
:controller_file_path,
|
|
5
|
+
:controller_class_nesting,
|
|
6
|
+
:controller_class_nesting_depth,
|
|
7
|
+
:controller_class_name,
|
|
8
|
+
:controller_singular_name,
|
|
9
|
+
:controller_plural_name
|
|
10
|
+
alias_method :controller_file_name, :controller_singular_name
|
|
11
|
+
alias_method :controller_table_name, :controller_plural_name
|
|
12
|
+
|
|
13
|
+
def initialize(runtime_args, runtime_options = {})
|
|
14
|
+
super
|
|
15
|
+
|
|
16
|
+
@controller_name = @name.pluralize
|
|
17
|
+
|
|
18
|
+
base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
|
|
19
|
+
@controller_class_name_without_nesting, @controller_singular_name, @controller_plural_name = inflect_names(base_name)
|
|
20
|
+
|
|
21
|
+
if @controller_class_nesting.empty?
|
|
22
|
+
@controller_class_name = @controller_class_name_without_nesting
|
|
23
|
+
else
|
|
24
|
+
@controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def manifest
|
|
29
|
+
record do |m|
|
|
30
|
+
# Check for class naming collisions.
|
|
31
|
+
m.class_collisions(controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}Helper")
|
|
32
|
+
m.class_collisions(class_path, "#{class_name}")
|
|
33
|
+
|
|
34
|
+
# Controller, helper, views, and test directories.
|
|
35
|
+
m.directory(File.join('app/models', class_path))
|
|
36
|
+
m.directory(File.join('app/controllers', controller_class_path))
|
|
37
|
+
m.directory(File.join('app/helpers', controller_class_path))
|
|
38
|
+
m.directory(File.join('app/views', controller_class_path, controller_file_name))
|
|
39
|
+
m.directory(File.join('test/functional', controller_class_path))
|
|
40
|
+
m.directory(File.join('test/unit', class_path))
|
|
41
|
+
|
|
42
|
+
m.template('model.rb', File.join('app/models', class_path, "#{file_name}.rb"))
|
|
43
|
+
|
|
44
|
+
m.template(
|
|
45
|
+
'controller.rb', File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb"))
|
|
49
|
+
m.template('helper.rb', File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb"))
|
|
50
|
+
m.template('unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb"))
|
|
51
|
+
m.template('fixtures.yml', File.join('test/fixtures', "#{table_name}.yml"))
|
|
52
|
+
|
|
53
|
+
unless options[:skip_migration]
|
|
54
|
+
m.migration_template(
|
|
55
|
+
'migration.rb', 'db/migrate',
|
|
56
|
+
:assigns => {
|
|
57
|
+
:migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}",
|
|
58
|
+
:attributes => attributes
|
|
59
|
+
},
|
|
60
|
+
:migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
|
|
61
|
+
)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
m.route_resources controller_file_name
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
protected
|
|
69
|
+
def banner
|
|
70
|
+
"Usage: #{$0} resource ModelName [field:type, field:type]"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def model_name
|
|
74
|
+
class_name.demodulize
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The resource generator creates an empty model and controller for use in a REST-friendly, resource-oriented
|
|
3
|
+
application. Say you want to a resource called post. Normally, you could just call "script/generate model post" and
|
|
4
|
+
"script/generate controller posts". This generator basically just collapses these two generators into one step.
|
|
5
|
+
|
|
6
|
+
The generator takes the name of the model as its first argument. This model name is then pluralized to get the
|
|
7
|
+
controller name. So "resource post" will generate a Post model and a PostsController and will be intended
|
|
8
|
+
for URLs like /posts and /posts/45.
|
|
9
|
+
|
|
10
|
+
As additional parameters, the generator will take attribute pairs described by name and type. These attributes will
|
|
11
|
+
be used to prepopulate the migration to create the table for the model and give you a set of predefined fixture.
|
|
12
|
+
You don't have to think up all attributes up front, but it's a good idea of adding just the baseline of what's
|
|
13
|
+
needed to start really working with the resource.
|
|
14
|
+
|
|
15
|
+
Examples:
|
|
16
|
+
./script/generate resource post
|
|
17
|
+
./script/generate resource post title:string created_on:date body:text published:boolean
|
|
18
|
+
./script/generate resource purchase order_id:integer created_at:datetime amount:decimal
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
|
2
|
+
one:
|
|
3
|
+
id: 1
|
|
4
|
+
<% for attribute in attributes -%>
|
|
5
|
+
<%= attribute.name %>: <%= attribute.default %>
|
|
6
|
+
<% end -%>
|
|
7
|
+
two:
|
|
8
|
+
id: 2
|
|
9
|
+
<% for attribute in attributes -%>
|
|
10
|
+
<%= attribute.name %>: <%= attribute.default %>
|
|
11
|
+
<% end -%>
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
+
# Replace this with your real tests.
|
|
17
|
+
def test_truth
|
|
18
|
+
assert true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class <%= migration_name %> < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :<%= table_name %> do |t|
|
|
4
|
+
<% for attribute in attributes -%>
|
|
5
|
+
t.column :<%= attribute.name %>, :<%= attribute.type %>
|
|
6
|
+
<% end -%>
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.down
|
|
11
|
+
drop_table :<%= table_name %>
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The scaffold generator creates a controller to interact with a model.
|
|
3
|
+
If the model does not exist, it creates the model as well. The generated
|
|
4
|
+
code is equivalent to the "scaffold :model" declaration, making it easy
|
|
5
|
+
to migrate when you wish to customize your controller and views.
|
|
6
|
+
|
|
7
|
+
The generator takes a model name, an optional controller name, and a
|
|
8
|
+
list of views as arguments. Scaffolded actions and views are created
|
|
9
|
+
automatically. Any views left over generate empty stubs.
|
|
10
|
+
|
|
11
|
+
The scaffolded actions and views are:
|
|
12
|
+
index, list, show, new, create, edit, update, destroy
|
|
13
|
+
|
|
14
|
+
If a controller name is not given, the plural form of the model name
|
|
15
|
+
will be used. The model and controller names may be given in CamelCase
|
|
16
|
+
or under_score and should not be suffixed with 'Model' or 'Controller'.
|
|
17
|
+
Both model and controller names may be prefixed with a module like a
|
|
18
|
+
file path; see the Modules Example for usage.
|
|
19
|
+
|
|
20
|
+
Example:
|
|
21
|
+
./script/generate scaffold Account Bank debit credit
|
|
22
|
+
|
|
23
|
+
This will generate an Account model and BankController with a full test
|
|
24
|
+
suite and a basic user interface. Now create the accounts table in your
|
|
25
|
+
database and browse to http://localhost/bank/ -- voila, you're on Rails!
|
|
26
|
+
|
|
27
|
+
Modules Example:
|
|
28
|
+
./script/generate scaffold CreditCard 'admin/credit_card' suspend late_fee
|
|
29
|
+
|
|
30
|
+
This will generate a CreditCard model and CreditCardController controller
|
|
31
|
+
in the admin module.
|
|
32
|
+
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
class ScaffoldingSandbox
|
|
2
|
+
include ActionView::Helpers::ActiveRecordHelper
|
|
3
|
+
|
|
4
|
+
attr_accessor :form_action, :singular_name, :suffix, :model_instance
|
|
5
|
+
|
|
6
|
+
def sandbox_binding
|
|
7
|
+
binding
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def default_input_block
|
|
11
|
+
Proc.new { |record, column| "<p><label for=\"#{record}_#{column.name}\">#{column.human_name}</label><br/>\n<%= check_update(@#{record},\"#{column.name}\",(#{input(record, column.name)}), @#{record}.#{column.name} )%>\n</p>"}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class ActionView::Helpers::InstanceTag
|
|
17
|
+
def to_input_field_tag(field_type, options={})
|
|
18
|
+
field_meth = "#{field_type}_field"
|
|
19
|
+
" #{field_meth} '#{@object_name}', '#{@method_name}', #{options.empty? ? 'options = {}' : ', '+options.inspect} "
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def to_text_area_tag(options = {})
|
|
23
|
+
" text_area '#{@object_name}', '#{@method_name}', #{options.empty? ? 'options = {}' : ', '+ options.inspect} "
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def to_date_select_tag(options = {})
|
|
27
|
+
" date_select '#{@object_name}', '#{@method_name}', #{options.empty? ? 'options = {}' : ', '+ options.inspect} "
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_datetime_select_tag(options = {})
|
|
31
|
+
" datetime_select '#{@object_name}', '#{@method_name}', #{options.empty? ? 'options = {}' : ', '+ options.inspect} "
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def to_time_select_tag(options = {})
|
|
35
|
+
" time_select '#{@object_name}', '#{@method_name}', #{options.empty? ? 'options = {}' : ', '+ options.inspect} "
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def to_boolean_select_tag(options= {})
|
|
39
|
+
" check_box '#{@object_name}', '#{@method_name}' #{options.empty? ? '' : ', '+ options.inspect} "
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class ScaffoldGenerator < Rails::Generator::NamedBase
|
|
44
|
+
attr_reader :controller_name,
|
|
45
|
+
:controller_class_path,
|
|
46
|
+
:controller_file_path,
|
|
47
|
+
:controller_class_nesting,
|
|
48
|
+
:controller_class_nesting_depth,
|
|
49
|
+
:controller_class_name,
|
|
50
|
+
:controller_singular_name,
|
|
51
|
+
:controller_plural_name
|
|
52
|
+
alias_method :controller_file_name, :controller_singular_name
|
|
53
|
+
alias_method :controller_table_name, :controller_plural_name
|
|
54
|
+
|
|
55
|
+
def initialize(runtime_args, runtime_options = {})
|
|
56
|
+
super
|
|
57
|
+
|
|
58
|
+
# Take controller name from the next argument. Default to the pluralized model name.
|
|
59
|
+
@controller_name = args.shift
|
|
60
|
+
@controller_name ||= ActiveRecord::Base.pluralize_table_names ? @name.pluralize : @name
|
|
61
|
+
|
|
62
|
+
base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
|
|
63
|
+
@controller_class_name_without_nesting, @controller_singular_name, @controller_plural_name = inflect_names(base_name)
|
|
64
|
+
|
|
65
|
+
if @controller_class_nesting.empty?
|
|
66
|
+
@controller_class_name = @controller_class_name_without_nesting
|
|
67
|
+
else
|
|
68
|
+
@controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def manifest
|
|
73
|
+
record do |m|
|
|
74
|
+
# Check for class naming collisions.
|
|
75
|
+
m.class_collisions controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}ControllerTest", "#{controller_class_name}Helper"
|
|
76
|
+
|
|
77
|
+
# Controller, helper, views, and test directories.
|
|
78
|
+
m.directory File.join('app/controllers', controller_class_path)
|
|
79
|
+
m.directory File.join('app/helpers', controller_class_path)
|
|
80
|
+
m.directory File.join('app/views', controller_class_path, controller_file_name)
|
|
81
|
+
m.directory File.join('app/views/layouts', controller_class_path)
|
|
82
|
+
m.directory File.join('test/functional', controller_class_path)
|
|
83
|
+
|
|
84
|
+
# Depend on model generator but skip if the model exists.
|
|
85
|
+
m.dependency 'model', [singular_name], :collision => :skip, :skip_migration => true
|
|
86
|
+
|
|
87
|
+
# Scaffolded forms.
|
|
88
|
+
m.complex_template "form.rhtml",
|
|
89
|
+
File.join('app/views',
|
|
90
|
+
controller_class_path,
|
|
91
|
+
controller_file_name,
|
|
92
|
+
"_form.rhtml"),
|
|
93
|
+
:insert => 'form_scaffolding.rhtml',
|
|
94
|
+
:sandbox => lambda { create_sandbox },
|
|
95
|
+
:begin_mark => 'form',
|
|
96
|
+
:end_mark => 'eoform',
|
|
97
|
+
:mark_id => singular_name
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
#copying the partial for ajax search
|
|
101
|
+
m.template "partial_list_elements.rhtml",
|
|
102
|
+
File.join('app/views',
|
|
103
|
+
controller_class_path,
|
|
104
|
+
controller_file_name,
|
|
105
|
+
"_list_elements.rhtml")
|
|
106
|
+
|
|
107
|
+
# Scaffolded views.
|
|
108
|
+
scaffold_views.each do |action|
|
|
109
|
+
m.template "view_#{action}.rhtml",
|
|
110
|
+
File.join('app/views',
|
|
111
|
+
controller_class_path,
|
|
112
|
+
controller_file_name,
|
|
113
|
+
"#{action}.rhtml"),
|
|
114
|
+
:assigns => { :action => action }
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Controller class, functional test, helper, and views.
|
|
118
|
+
m.template 'controller.rb',
|
|
119
|
+
File.join('app/controllers',
|
|
120
|
+
controller_class_path,
|
|
121
|
+
"#{controller_file_name}_controller.rb")
|
|
122
|
+
|
|
123
|
+
m.template 'functional_test.rb',
|
|
124
|
+
File.join('test/functional',
|
|
125
|
+
controller_class_path,
|
|
126
|
+
"#{controller_file_name}_controller_test.rb")
|
|
127
|
+
|
|
128
|
+
m.template 'helper.rb',
|
|
129
|
+
File.join('app/helpers',
|
|
130
|
+
controller_class_path,
|
|
131
|
+
"#{controller_file_name}_helper.rb")
|
|
132
|
+
|
|
133
|
+
# Uncomment to create a layout. This kind of scaffold use ever the same layout for
|
|
134
|
+
# all views
|
|
135
|
+
|
|
136
|
+
# m.template 'layout.rhtml',
|
|
137
|
+
# File.join('app/views/layouts',
|
|
138
|
+
# controller_class_path,
|
|
139
|
+
# "#{controller_file_name}.rhtml")
|
|
140
|
+
|
|
141
|
+
# Uncomment to create a style sheet when scaffolding
|
|
142
|
+
|
|
143
|
+
# m.template 'style.css', 'public/stylesheets/scaffold.css'
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
# Unscaffolded views.
|
|
147
|
+
unscaffolded_actions.each do |action|
|
|
148
|
+
path = File.join('app/views',
|
|
149
|
+
controller_class_path,
|
|
150
|
+
controller_file_name,
|
|
151
|
+
"#{action}.rhtml")
|
|
152
|
+
m.template "controller:view.rhtml", path,
|
|
153
|
+
:assigns => { :action => action, :path => path}
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
protected
|
|
159
|
+
# Override with your own usage banner.
|
|
160
|
+
def banner
|
|
161
|
+
"Usage: #{$0} scaffold ModelName [ControllerName] [action, ...]"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def scaffold_views
|
|
165
|
+
%w(list show new edit)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def scaffold_actions
|
|
169
|
+
scaffold_views + %w(index create update destroy)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def model_name
|
|
173
|
+
class_name.demodulize
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def unscaffolded_actions
|
|
177
|
+
args - scaffold_actions
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def suffix
|
|
181
|
+
"_#{singular_name}" if options[:suffix]
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def create_sandbox
|
|
185
|
+
sandbox = ScaffoldingSandbox.new
|
|
186
|
+
sandbox.singular_name = singular_name
|
|
187
|
+
begin
|
|
188
|
+
sandbox.model_instance = model_instance
|
|
189
|
+
sandbox.instance_variable_set("@#{singular_name}", sandbox.model_instance)
|
|
190
|
+
rescue ActiveRecord::StatementInvalid => e
|
|
191
|
+
logger.error "Before updating scaffolding from new DB schema, try creating a table for your model (#{class_name})"
|
|
192
|
+
raise SystemExit
|
|
193
|
+
end
|
|
194
|
+
sandbox.suffix = suffix
|
|
195
|
+
sandbox
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def model_instance
|
|
199
|
+
base = class_nesting.split('::').inject(Object) do |base, nested|
|
|
200
|
+
break base.const_get(nested) if base.const_defined?(nested)
|
|
201
|
+
base.const_set(nested, Module.new)
|
|
202
|
+
end
|
|
203
|
+
unless base.const_defined?(@class_name_without_nesting)
|
|
204
|
+
base.const_set(@class_name_without_nesting, Class.new(ActiveRecord::Base))
|
|
205
|
+
end
|
|
206
|
+
class_name.constantize.new
|
|
207
|
+
end
|
|
208
|
+
end
|