railsex 1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/LICENSE +3 -0
- data/Manifest +55 -0
- data/README +53 -0
- data/init.rb +27 -0
- data/lib/actionpack/mime_responds_extension.rb +46 -0
- data/lib/activerecord/changed.rb +52 -0
- data/lib/railties/console.rb +10 -0
- data/railsex.gemspec +30 -0
- data/test/Rakefile +8 -0
- data/test/app/controllers/application.rb +4 -0
- data/test/app/controllers/people_controller.rb +73 -0
- data/test/app/helpers/application_helper.rb +3 -0
- data/test/app/helpers/people_helper.rb +2 -0
- data/test/app/models/person.rb +4 -0
- data/test/app/views/layouts/application.html.erb +16 -0
- data/test/app/views/people/edit.html.erb +27 -0
- data/test/app/views/people/index.html.erb +24 -0
- data/test/app/views/people/new.html.erb +26 -0
- data/test/app/views/people/show.html.erb +18 -0
- data/test/config/boot.rb +109 -0
- data/test/config/database.yml +19 -0
- data/test/config/environment.rb +13 -0
- data/test/config/environments/development.rb +18 -0
- data/test/config/environments/production.rb +19 -0
- data/test/config/environments/test.rb +22 -0
- data/test/config/routes.rb +4 -0
- data/test/db/development.sqlite3 +0 -0
- data/test/db/migrate/001_create_people.rb +15 -0
- data/test/db/migrate/002_add_stuff_to_person.rb +11 -0
- data/test/db/schema.rb +24 -0
- data/test/db/test.sqlite3 +0 -0
- data/test/public/404.html +30 -0
- data/test/public/422.html +30 -0
- data/test/public/500.html +30 -0
- data/test/public/dispatch.cgi +10 -0
- data/test/public/dispatch.fcgi +24 -0
- data/test/public/dispatch.rb +10 -0
- data/test/public/favicon.ico +0 -0
- data/test/script/about +3 -0
- data/test/script/console +3 -0
- data/test/script/destroy +3 -0
- data/test/script/generate +3 -0
- data/test/script/performance/benchmarker +3 -0
- data/test/script/performance/profiler +3 -0
- data/test/script/performance/request +3 -0
- data/test/script/plugin +3 -0
- data/test/script/process/inspector +3 -0
- data/test/script/process/reaper +3 -0
- data/test/script/process/spawner +3 -0
- data/test/script/runner +3 -0
- data/test/script/server +3 -0
- data/test/test/fixtures/people.yml +11 -0
- data/test/test/functional/people_controller_test.rb +45 -0
- data/test/test/test_helper.rb +10 -0
- data/test/test/unit/person_test.rb +64 -0
- metadata +108 -0
data/CHANGELOG
ADDED
data/LICENSE
ADDED
data/Manifest
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
CHANGELOG
|
2
|
+
init.rb
|
3
|
+
lib/actionpack/mime_responds_extension.rb
|
4
|
+
lib/activerecord/changed.rb
|
5
|
+
lib/railties/console.rb
|
6
|
+
LICENSE
|
7
|
+
Manifest
|
8
|
+
README
|
9
|
+
test/app/controllers/application.rb
|
10
|
+
test/app/controllers/people_controller.rb
|
11
|
+
test/app/helpers/application_helper.rb
|
12
|
+
test/app/helpers/people_helper.rb
|
13
|
+
test/app/models/person.rb
|
14
|
+
test/app/views/layouts/application.html.erb
|
15
|
+
test/app/views/people/edit.html.erb
|
16
|
+
test/app/views/people/index.html.erb
|
17
|
+
test/app/views/people/new.html.erb
|
18
|
+
test/app/views/people/show.html.erb
|
19
|
+
test/config/boot.rb
|
20
|
+
test/config/database.yml
|
21
|
+
test/config/environment.rb
|
22
|
+
test/config/environments/development.rb
|
23
|
+
test/config/environments/production.rb
|
24
|
+
test/config/environments/test.rb
|
25
|
+
test/config/routes.rb
|
26
|
+
test/db/development.sqlite3
|
27
|
+
test/db/migrate/001_create_people.rb
|
28
|
+
test/db/migrate/002_add_stuff_to_person.rb
|
29
|
+
test/db/schema.rb
|
30
|
+
test/db/test.sqlite3
|
31
|
+
test/public/404.html
|
32
|
+
test/public/422.html
|
33
|
+
test/public/500.html
|
34
|
+
test/public/dispatch.cgi
|
35
|
+
test/public/dispatch.fcgi
|
36
|
+
test/public/dispatch.rb
|
37
|
+
test/public/favicon.ico
|
38
|
+
test/Rakefile
|
39
|
+
test/script/about
|
40
|
+
test/script/console
|
41
|
+
test/script/destroy
|
42
|
+
test/script/generate
|
43
|
+
test/script/performance/benchmarker
|
44
|
+
test/script/performance/profiler
|
45
|
+
test/script/performance/request
|
46
|
+
test/script/plugin
|
47
|
+
test/script/process/inspector
|
48
|
+
test/script/process/reaper
|
49
|
+
test/script/process/spawner
|
50
|
+
test/script/runner
|
51
|
+
test/script/server
|
52
|
+
test/test/fixtures/people.yml
|
53
|
+
test/test/functional/people_controller_test.rb
|
54
|
+
test/test/test_helper.rb
|
55
|
+
test/test/unit/person_test.rb
|
data/README
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
~[ Description ]~
|
2
|
+
|
3
|
+
Railsex - pronounced "Rails Extensions" OR "Ex Rails" ( easier to say ) - is a plugin for all those cool/good to have/experimental features
|
4
|
+
which cannot possibly be in core due to their nature. As rails itself, this plugin is supposed to be a community effort. So, do chime in !
|
5
|
+
|
6
|
+
~[ How to use ]~
|
7
|
+
|
8
|
+
Railsex loads extensions only on demand because of the variety of options it provides.
|
9
|
+
|
10
|
+
You will need to load the extension in your environment.rb configuration block with following syntax :
|
11
|
+
|
12
|
+
config.after_initialize do
|
13
|
+
config.extenstions = [:respond_to, :lazy_attributes, :console]
|
14
|
+
end
|
15
|
+
|
16
|
+
The plugin requires Rails 2.0.x or higher version.
|
17
|
+
|
18
|
+
~[ Current Extensions ]~
|
19
|
+
- respond_to
|
20
|
+
- lazy_attributes
|
21
|
+
- console
|
22
|
+
|
23
|
+
~[ Current Features ]~
|
24
|
+
|
25
|
+
* Argument-less support for respond_to :
|
26
|
+
|
27
|
+
In your controller you can have :
|
28
|
+
|
29
|
+
respond_to do
|
30
|
+
html
|
31
|
+
xml { render :xml => @article }
|
32
|
+
end
|
33
|
+
|
34
|
+
* Lazy attributes to provide partial updates
|
35
|
+
|
36
|
+
You can declare lazy attributes in your model definition :
|
37
|
+
|
38
|
+
class Person < ActiveRecord::Base
|
39
|
+
lazy_attributes :history, :bio
|
40
|
+
end
|
41
|
+
|
42
|
+
In this case, when you do @person.save, ActiveRecord will include bio and history columns in UPDATE query only if you accessed
|
43
|
+
@person.history= or @person.bio= methods.
|
44
|
+
|
45
|
+
* Very common console tricks
|
46
|
+
- [] finders for model so you can do Article[1], Article[:all]
|
47
|
+
- "log_to" function to print out db queries to rails irb console
|
48
|
+
|
49
|
+
~[ Primary Authors ]~
|
50
|
+
|
51
|
+
Pratik Naik - http://m.onkey.org
|
52
|
+
Unknown people from the internet for "console" extension
|
53
|
+
|
data/init.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
RAILSEX_MAPPING = { 'console' => 'railties/console',
|
2
|
+
'lazy_attributes' => 'activerecord/changed',
|
3
|
+
'respond_to' => 'actionpack/mime_responds_extension' }
|
4
|
+
|
5
|
+
class Rails::Configuration
|
6
|
+
attr_accessor :extenstions
|
7
|
+
|
8
|
+
def extenstions
|
9
|
+
Array(@extenstions).map(&:to_s)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class Rails::Initializer
|
14
|
+
def load_application_initializers_with_railsex
|
15
|
+
load_application_initializers_without_railsex
|
16
|
+
|
17
|
+
unless configuration.extenstions.to_set.subset?(RAILSEX_MAPPING.keys.to_set)
|
18
|
+
raise "Invalid Extension Supplied. Valid extensions are : #{RAILSEX_MAPPING.keys.join(', ')}"
|
19
|
+
end
|
20
|
+
|
21
|
+
configuration.extenstions.each do |extn|
|
22
|
+
RAILS_DEFAULT_LOGGER.info "[Railsex] Loading #{extn}"
|
23
|
+
require RAILSEX_MAPPING[extn]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
alias_method_chain :load_application_initializers, :railsex
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module ActionController
|
2
|
+
|
3
|
+
module MimeRespondsExtension
|
4
|
+
def respond_to(*types, &block)
|
5
|
+
raise ArgumentError, "respond_to takes either types or a block, never both" unless types.any? ^ block
|
6
|
+
block ||= lambda { |responder| types.each { |type| responder.send(type) } }
|
7
|
+
arity = (block.arity == 1)
|
8
|
+
responder = ActionController::MimeResponds::Responder.new(self, arity)
|
9
|
+
arity ? block.call(responder) : responder.instance_eval(&block)
|
10
|
+
responder.respond
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module ResponderExtension
|
15
|
+
def self.included(base)
|
16
|
+
base.alias_method_chain :initialize, :arity
|
17
|
+
base.alias_method_chain :custom, :arity
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize_with_arity(controller, arity)
|
21
|
+
@arity = arity
|
22
|
+
initialize_without_arity(controller)
|
23
|
+
end
|
24
|
+
|
25
|
+
def custom_with_arity(mime_type, &block)
|
26
|
+
mime_type = mime_type.is_a?(Mime::Type) ? mime_type : Mime::Type.lookup(mime_type.to_s)
|
27
|
+
|
28
|
+
@order << mime_type
|
29
|
+
|
30
|
+
@responses[mime_type] = Proc.new do
|
31
|
+
@response.template.template_format = mime_type.to_sym
|
32
|
+
@response.content_type = mime_type.to_s
|
33
|
+
if block_given?
|
34
|
+
@arity ? block.call : @controller.instance_eval(&block)
|
35
|
+
else
|
36
|
+
@controller.send(:render, :action => @controller.action_name)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
ActionController::Base.send :include, ActionController::MimeRespondsExtension
|
46
|
+
ActionController::MimeResponds::Responder.send :include, ActionController::ResponderExtension
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module Changed
|
3
|
+
def self.included(base)
|
4
|
+
base.extend ClassMethods
|
5
|
+
base.alias_method_chain :attributes_with_quotes, :changed
|
6
|
+
base.alias_method_chain :write_attribute, :changed
|
7
|
+
base.alias_method_chain :save, :changed
|
8
|
+
base.alias_method_chain :save!, :changed
|
9
|
+
base.alias_method_chain :reload, :changed
|
10
|
+
end
|
11
|
+
|
12
|
+
module ClassMethods
|
13
|
+
def lazy_attributes(*args)
|
14
|
+
@@lazy_attributes ||= Array(args).map(&:to_s).to_set
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def attributes_with_quotes_with_changed(include_primary_key = true, include_readonly_attributes = true)
|
21
|
+
original = attributes_with_quotes_without_changed(include_primary_key, include_readonly_attributes)
|
22
|
+
|
23
|
+
# Reject only if both supplied arguments are false
|
24
|
+
original.reject! { |key, value| changed_lazy.include?(key) } if !(include_primary_key || include_readonly_attributes)
|
25
|
+
original
|
26
|
+
end
|
27
|
+
|
28
|
+
def write_attribute_with_changed(attr_name, value)
|
29
|
+
changed_lazy.delete(attr_name.to_s)
|
30
|
+
write_attribute_without_changed(attr_name, value)
|
31
|
+
end
|
32
|
+
|
33
|
+
def reload_with_changed
|
34
|
+
@changed_lazy = nil
|
35
|
+
reload_without_changed
|
36
|
+
end
|
37
|
+
|
38
|
+
def changed_lazy
|
39
|
+
@changed_lazy ||= self.class.lazy_attributes.clone
|
40
|
+
end
|
41
|
+
|
42
|
+
def save_with_changed
|
43
|
+
save_without_changed ensure @changed_lazy = nil
|
44
|
+
end
|
45
|
+
|
46
|
+
def save_with_changed!
|
47
|
+
save_without_changed! ensure @changed_lazy = nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
ActiveRecord::Base.send :include, ActiveRecord::Changed
|
data/railsex.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
# Gem::Specification for Railsex-1.2
|
3
|
+
# Originally generated by Echoe
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = %q{railsex}
|
7
|
+
s.version = "1.2"
|
8
|
+
|
9
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = [""]
|
13
|
+
s.date = %q{2007-12-20}
|
14
|
+
s.description = %q{}
|
15
|
+
s.email = %q{}
|
16
|
+
s.files = ["CHANGELOG", "init.rb", "lib/actionpack/mime_responds_extension.rb", "lib/activerecord/changed.rb", "lib/railties/console.rb", "LICENSE", "Manifest", "README", "test/app/controllers/application.rb", "test/app/controllers/people_controller.rb", "test/app/helpers/application_helper.rb", "test/app/helpers/people_helper.rb", "test/app/models/person.rb", "test/app/views/layouts/application.html.erb", "test/app/views/people/edit.html.erb", "test/app/views/people/index.html.erb", "test/app/views/people/new.html.erb", "test/app/views/people/show.html.erb", "test/config/boot.rb", "test/config/database.yml", "test/config/environment.rb", "test/config/environments/development.rb", "test/config/environments/production.rb", "test/config/environments/test.rb", "test/config/routes.rb", "test/db/development.sqlite3", "test/db/migrate/001_create_people.rb", "test/db/migrate/002_add_stuff_to_person.rb", "test/db/schema.rb", "test/db/test.sqlite3", "test/public/404.html", "test/public/422.html", "test/public/500.html", "test/public/dispatch.cgi", "test/public/dispatch.fcgi", "test/public/dispatch.rb", "test/public/favicon.ico", "test/Rakefile", "test/script/about", "test/script/console", "test/script/destroy", "test/script/generate", "test/script/performance/benchmarker", "test/script/performance/profiler", "test/script/performance/request", "test/script/plugin", "test/script/process/inspector", "test/script/process/reaper", "test/script/process/spawner", "test/script/runner", "test/script/server", "test/test/fixtures/people.yml", "test/test/functional/people_controller_test.rb", "test/test/test_helper.rb", "test/test/unit/person_test.rb", "railsex.gemspec"]
|
17
|
+
s.has_rdoc = true
|
18
|
+
s.homepage = %q{}
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.rubyforge_project = %q{railsex}
|
21
|
+
s.rubygems_version = %q{0.9.5}
|
22
|
+
s.summary = %q{}
|
23
|
+
s.test_files = ["test/test/test_helper.rb"]
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# # Original Rakefile source (requires the Echoe gem):
|
28
|
+
#
|
29
|
+
# require 'echoe'
|
30
|
+
# Echoe.new('railsex')
|
data/test/Rakefile
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
class PeopleController < ApplicationController
|
2
|
+
|
3
|
+
def index
|
4
|
+
@people = Person.find(:all)
|
5
|
+
|
6
|
+
respond_to do
|
7
|
+
html
|
8
|
+
xml { render :xml => @people }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def show
|
13
|
+
@person = Person.find(params[:id])
|
14
|
+
|
15
|
+
respond_to do
|
16
|
+
html
|
17
|
+
xml { render :xml => @person }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def new
|
22
|
+
@person = Person.new
|
23
|
+
|
24
|
+
respond_to do
|
25
|
+
html
|
26
|
+
xml { render :xml => @person }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def edit
|
31
|
+
@person = Person.find(params[:id])
|
32
|
+
end
|
33
|
+
|
34
|
+
def create
|
35
|
+
@person = Person.new(params[:person])
|
36
|
+
|
37
|
+
respond_to do |format|
|
38
|
+
if @person.save
|
39
|
+
flash[:notice] = 'Person was successfully created.'
|
40
|
+
format.html { redirect_to(@person) }
|
41
|
+
format.xml { render :xml => @person, :status => :created, :location => @person }
|
42
|
+
else
|
43
|
+
format.html { render :action => "new" }
|
44
|
+
format.xml { render :xml => @person.errors, :status => :unprocessable_entity }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def update
|
50
|
+
@person = Person.find(params[:id])
|
51
|
+
|
52
|
+
respond_to do |format|
|
53
|
+
if @person.update_attributes(params[:person])
|
54
|
+
flash[:notice] = 'Person was successfully updated.'
|
55
|
+
format.html { redirect_to(@person) }
|
56
|
+
format.xml { head :ok }
|
57
|
+
else
|
58
|
+
format.html { render :action => "edit" }
|
59
|
+
format.xml { render :xml => @person.errors, :status => :unprocessable_entity }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def destroy
|
65
|
+
@person = Person.find(params[:id])
|
66
|
+
@person.destroy
|
67
|
+
|
68
|
+
respond_to do |format|
|
69
|
+
format.html { redirect_to(people_url) }
|
70
|
+
format.xml { head :ok }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
|
7
|
+
<title>People: <%= controller.action_name %></title>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
|
11
|
+
<p style="color: green"><%= flash[:notice] %></p>
|
12
|
+
|
13
|
+
<%= yield %>
|
14
|
+
|
15
|
+
</body>
|
16
|
+
</html>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<h1>Editing person</h1>
|
2
|
+
|
3
|
+
<%= error_messages_for :person %>
|
4
|
+
|
5
|
+
<% form_for(@person) do |f| %>
|
6
|
+
<p>
|
7
|
+
<b>Name</b><br />
|
8
|
+
<%= f.text_field :name %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<p>
|
12
|
+
<b>Address</b><br />
|
13
|
+
<%= f.text_area :address %>
|
14
|
+
</p>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
<b>Age</b><br />
|
18
|
+
<%= f.text_field :age %>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
<p>
|
22
|
+
<%= f.submit "Update" %>
|
23
|
+
</p>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<%= link_to 'Show', @person %> |
|
27
|
+
<%= link_to 'Back', people_path %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h1>Listing people</h1>
|
2
|
+
|
3
|
+
<table>
|
4
|
+
<tr>
|
5
|
+
<th>Name</th>
|
6
|
+
<th>Address</th>
|
7
|
+
<th>Age</th>
|
8
|
+
</tr>
|
9
|
+
|
10
|
+
<% for person in @people %>
|
11
|
+
<tr>
|
12
|
+
<td><%=h person.name %></td>
|
13
|
+
<td><%=h person.address %></td>
|
14
|
+
<td><%=h person.age %></td>
|
15
|
+
<td><%= link_to 'Show', person %></td>
|
16
|
+
<td><%= link_to 'Edit', edit_person_path(person) %></td>
|
17
|
+
<td><%= link_to 'Destroy', person, :confirm => 'Are you sure?', :method => :delete %></td>
|
18
|
+
</tr>
|
19
|
+
<% end %>
|
20
|
+
</table>
|
21
|
+
|
22
|
+
<br />
|
23
|
+
|
24
|
+
<%= link_to 'New person', new_person_path %>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<h1>New person</h1>
|
2
|
+
|
3
|
+
<%= error_messages_for :person %>
|
4
|
+
|
5
|
+
<% form_for(@person) do |f| %>
|
6
|
+
<p>
|
7
|
+
<b>Name</b><br />
|
8
|
+
<%= f.text_field :name %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<p>
|
12
|
+
<b>Address</b><br />
|
13
|
+
<%= f.text_area :address %>
|
14
|
+
</p>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
<b>Age</b><br />
|
18
|
+
<%= f.text_field :age %>
|
19
|
+
</p>
|
20
|
+
|
21
|
+
<p>
|
22
|
+
<%= f.submit "Create" %>
|
23
|
+
</p>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<%= link_to 'Back', people_path %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<p>
|
2
|
+
<b>Name:</b>
|
3
|
+
<%=h @person.name %>
|
4
|
+
</p>
|
5
|
+
|
6
|
+
<p>
|
7
|
+
<b>Address:</b>
|
8
|
+
<%=h @person.address %>
|
9
|
+
</p>
|
10
|
+
|
11
|
+
<p>
|
12
|
+
<b>Age:</b>
|
13
|
+
<%=h @person.age %>
|
14
|
+
</p>
|
15
|
+
|
16
|
+
|
17
|
+
<%= link_to 'Edit', edit_person_path(@person) %> |
|
18
|
+
<%= link_to 'Back', people_path %>
|
data/test/config/boot.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# Don't change this file!
|
2
|
+
# Configure your app in config/environment.rb and config/environments/*.rb
|
3
|
+
|
4
|
+
RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
|
5
|
+
|
6
|
+
module Rails
|
7
|
+
class << self
|
8
|
+
def boot!
|
9
|
+
unless booted?
|
10
|
+
preinitialize
|
11
|
+
pick_boot.run
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def booted?
|
16
|
+
defined? Rails::Initializer
|
17
|
+
end
|
18
|
+
|
19
|
+
def pick_boot
|
20
|
+
(vendor_rails? ? VendorBoot : GemBoot).new
|
21
|
+
end
|
22
|
+
|
23
|
+
def vendor_rails?
|
24
|
+
File.exist?("#{RAILS_ROOT}/vendor/rails")
|
25
|
+
end
|
26
|
+
|
27
|
+
# FIXME : Ruby 1.9
|
28
|
+
def preinitialize
|
29
|
+
load(preinitializer_path) if File.exists?(preinitializer_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
def preinitializer_path
|
33
|
+
"#{RAILS_ROOT}/config/preinitializer.rb"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Boot
|
38
|
+
def run
|
39
|
+
load_initializer
|
40
|
+
Rails::Initializer.run(:set_load_path)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class VendorBoot < Boot
|
45
|
+
def load_initializer
|
46
|
+
require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class GemBoot < Boot
|
51
|
+
def load_initializer
|
52
|
+
self.class.load_rubygems
|
53
|
+
load_rails_gem
|
54
|
+
require 'initializer'
|
55
|
+
end
|
56
|
+
|
57
|
+
def load_rails_gem
|
58
|
+
if version = self.class.gem_version
|
59
|
+
gem 'rails', version
|
60
|
+
else
|
61
|
+
gem 'rails'
|
62
|
+
end
|
63
|
+
rescue Gem::LoadError => load_error
|
64
|
+
$stderr.puts %(Missing the Rails #{version} gem. Please `gem install -v=#{version} rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.)
|
65
|
+
exit 1
|
66
|
+
end
|
67
|
+
|
68
|
+
class << self
|
69
|
+
def rubygems_version
|
70
|
+
Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
|
71
|
+
end
|
72
|
+
|
73
|
+
def gem_version
|
74
|
+
if defined? RAILS_GEM_VERSION
|
75
|
+
RAILS_GEM_VERSION
|
76
|
+
elsif ENV.include?('RAILS_GEM_VERSION')
|
77
|
+
ENV['RAILS_GEM_VERSION']
|
78
|
+
else
|
79
|
+
parse_gem_version(read_environment_rb)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def load_rubygems
|
84
|
+
require 'rubygems'
|
85
|
+
|
86
|
+
unless rubygems_version >= '0.9.4'
|
87
|
+
$stderr.puts %(Rails requires RubyGems >= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
88
|
+
exit 1
|
89
|
+
end
|
90
|
+
|
91
|
+
rescue LoadError
|
92
|
+
$stderr.puts %(Rails requires RubyGems >= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
|
93
|
+
exit 1
|
94
|
+
end
|
95
|
+
|
96
|
+
def parse_gem_version(text)
|
97
|
+
$1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
def read_environment_rb
|
102
|
+
File.read("#{RAILS_ROOT}/config/environment.rb")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# All that for this:
|
109
|
+
Rails.boot!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3-ruby (not necessary on OS X Leopard)
|
3
|
+
development:
|
4
|
+
adapter: sqlite3
|
5
|
+
database: db/development.sqlite3
|
6
|
+
timeout: 5000
|
7
|
+
|
8
|
+
# Warning: The database defined as 'test' will be erased and
|
9
|
+
# re-generated from your development database when you run 'rake'.
|
10
|
+
# Do not set this db to the same as development or production.
|
11
|
+
test:
|
12
|
+
adapter: sqlite3
|
13
|
+
database: db/test.sqlite3
|
14
|
+
timeout: 5000
|
15
|
+
|
16
|
+
production:
|
17
|
+
adapter: sqlite3
|
18
|
+
database: db/production.sqlite3
|
19
|
+
timeout: 5000
|
@@ -0,0 +1,13 @@
|
|
1
|
+
RAILS_GEM_VERSION = '2.0.2' unless defined? RAILS_GEM_VERSION
|
2
|
+
|
3
|
+
require File.join(File.dirname(__FILE__), 'boot')
|
4
|
+
|
5
|
+
Rails::Initializer.run do |config|
|
6
|
+
config.action_controller.session = {
|
7
|
+
:session_key => '_test_session',
|
8
|
+
:secret => '5b230be6567e2558f51e2ce60441b836d2621d37a4f868036a1817ec941f2e773965df720f7516027c3f729ca6321b37e42160307519f5592b7e283fb16f0d44'
|
9
|
+
}
|
10
|
+
config.after_initialize do
|
11
|
+
config.extenstions = [:respond_to, :lazy_attributes, :console]
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
2
|
+
|
3
|
+
# In the development environment your application's code is reloaded on
|
4
|
+
# every request. This slows down response time but is perfect for development
|
5
|
+
# since you don't have to restart the webserver when you make code changes.
|
6
|
+
config.cache_classes = false
|
7
|
+
|
8
|
+
# Log error messages when you accidentally call methods on nil.
|
9
|
+
config.whiny_nils = true
|
10
|
+
|
11
|
+
# Show full error reports and disable caching
|
12
|
+
config.action_controller.consider_all_requests_local = true
|
13
|
+
config.action_view.debug_rjs = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
config.action_view.cache_template_extensions = false
|
16
|
+
|
17
|
+
# Don't care if the mailer can't send
|
18
|
+
config.action_mailer.raise_delivery_errors = false
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
2
|
+
|
3
|
+
# The production environment is meant for finished, "live" apps.
|
4
|
+
# Code is not reloaded between requests
|
5
|
+
config.cache_classes = true
|
6
|
+
|
7
|
+
# Use a different logger for distributed setups
|
8
|
+
# config.logger = SyslogLogger.new
|
9
|
+
|
10
|
+
# Full error reports are disabled and caching is turned on
|
11
|
+
config.action_controller.consider_all_requests_local = false
|
12
|
+
config.action_controller.perform_caching = true
|
13
|
+
config.action_view.cache_template_loading = true
|
14
|
+
|
15
|
+
# Enable serving of images, stylesheets, and javascripts from an asset server
|
16
|
+
# config.action_controller.asset_host = "http://assets.example.com"
|
17
|
+
|
18
|
+
# Disable delivery errors, bad email addresses will be ignored
|
19
|
+
# config.action_mailer.raise_delivery_errors = false
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Settings specified here will take precedence over those in config/environment.rb
|
2
|
+
|
3
|
+
# The test environment is used exclusively to run your application's
|
4
|
+
# test suite. You never need to work with it otherwise. Remember that
|
5
|
+
# your test database is "scratch space" for the test suite and is wiped
|
6
|
+
# and recreated between test runs. Don't rely on the data there!
|
7
|
+
config.cache_classes = true
|
8
|
+
|
9
|
+
# Log error messages when you accidentally call methods on nil.
|
10
|
+
config.whiny_nils = true
|
11
|
+
|
12
|
+
# Show full error reports and disable caching
|
13
|
+
config.action_controller.consider_all_requests_local = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
|
16
|
+
# Disable request forgery protection in test environment
|
17
|
+
config.action_controller.allow_forgery_protection = false
|
18
|
+
|
19
|
+
# Tell ActionMailer not to deliver emails to the real world.
|
20
|
+
# The :test delivery method accumulates sent emails in the
|
21
|
+
# ActionMailer::Base.deliveries array.
|
22
|
+
config.action_mailer.delivery_method = :test
|
Binary file
|
data/test/db/schema.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# This file is auto-generated from the current state of the database. Instead of editing this file,
|
2
|
+
# please use the migrations feature of ActiveRecord to incrementally modify your database, and
|
3
|
+
# then regenerate this schema definition.
|
4
|
+
#
|
5
|
+
# Note that this schema.rb definition is the authoritative source for your database schema. If you need
|
6
|
+
# to create the application database on another system, you should be using db:schema:load, not running
|
7
|
+
# all the migrations from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
8
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
9
|
+
#
|
10
|
+
# It's strongly recommended to check this file into your version control system.
|
11
|
+
|
12
|
+
ActiveRecord::Schema.define(:version => 2) do
|
13
|
+
|
14
|
+
create_table "people", :force => true do |t|
|
15
|
+
t.string "name"
|
16
|
+
t.text "address"
|
17
|
+
t.integer "age"
|
18
|
+
t.datetime "created_at"
|
19
|
+
t.datetime "updated_at"
|
20
|
+
t.text "bio"
|
21
|
+
t.text "history"
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
Binary file
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>The page you were looking for doesn't exist (404)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/404.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
27
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>The change you wanted was rejected (422)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/422.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>The change you wanted was rejected.</h1>
|
27
|
+
<p>Maybe you tried to change something you didn't have access to.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
|
6
|
+
<head>
|
7
|
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
8
|
+
<title>We're sorry, but something went wrong (500)</title>
|
9
|
+
<style type="text/css">
|
10
|
+
body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
|
11
|
+
div.dialog {
|
12
|
+
width: 25em;
|
13
|
+
padding: 0 4em;
|
14
|
+
margin: 4em auto 0 auto;
|
15
|
+
border: 1px solid #ccc;
|
16
|
+
border-right-color: #999;
|
17
|
+
border-bottom-color: #999;
|
18
|
+
}
|
19
|
+
h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
|
20
|
+
</style>
|
21
|
+
</head>
|
22
|
+
|
23
|
+
<body>
|
24
|
+
<!-- This file lives in public/500.html -->
|
25
|
+
<div class="dialog">
|
26
|
+
<h1>We're sorry, but something went wrong.</h1>
|
27
|
+
<p>We've been notified about this issue and we'll take a look at it shortly.</p>
|
28
|
+
</div>
|
29
|
+
</body>
|
30
|
+
</html>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/opt/local/bin/ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
|
4
|
+
|
5
|
+
# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
|
6
|
+
# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
|
7
|
+
require "dispatcher"
|
8
|
+
|
9
|
+
ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
|
10
|
+
Dispatcher.dispatch
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/opt/local/bin/ruby
|
2
|
+
#
|
3
|
+
# You may specify the path to the FastCGI crash log (a log of unhandled
|
4
|
+
# exceptions which forced the FastCGI instance to exit, great for debugging)
|
5
|
+
# and the number of requests to process before running garbage collection.
|
6
|
+
#
|
7
|
+
# By default, the FastCGI crash log is RAILS_ROOT/log/fastcgi.crash.log
|
8
|
+
# and the GC period is nil (turned off). A reasonable number of requests
|
9
|
+
# could range from 10-100 depending on the memory footprint of your app.
|
10
|
+
#
|
11
|
+
# Example:
|
12
|
+
# # Default log path, normal GC behavior.
|
13
|
+
# RailsFCGIHandler.process!
|
14
|
+
#
|
15
|
+
# # Default log path, 50 requests between GC.
|
16
|
+
# RailsFCGIHandler.process! nil, 50
|
17
|
+
#
|
18
|
+
# # Custom log path, normal GC behavior.
|
19
|
+
# RailsFCGIHandler.process! '/var/log/myapp_fcgi_crash.log'
|
20
|
+
#
|
21
|
+
require File.dirname(__FILE__) + "/../config/environment"
|
22
|
+
require 'fcgi_handler'
|
23
|
+
|
24
|
+
RailsFCGIHandler.process!
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/opt/local/bin/ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + "/../config/environment" unless defined?(RAILS_ROOT)
|
4
|
+
|
5
|
+
# If you're using RubyGems and mod_ruby, this require should be changed to an absolute path one, like:
|
6
|
+
# "/usr/local/lib/ruby/gems/1.8/gems/rails-0.8.0/lib/dispatcher" -- otherwise performance is severely impaired
|
7
|
+
require "dispatcher"
|
8
|
+
|
9
|
+
ADDITIONAL_LOAD_PATHS.reverse.each { |dir| $:.unshift(dir) if File.directory?(dir) } if defined?(Apache::RubyRun)
|
10
|
+
Dispatcher.dispatch
|
File without changes
|
data/test/script/about
ADDED
data/test/script/console
ADDED
data/test/script/destroy
ADDED
data/test/script/plugin
ADDED
data/test/script/runner
ADDED
data/test/script/server
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class PeopleControllerTest < ActionController::TestCase
|
4
|
+
def test_should_get_index
|
5
|
+
get :index
|
6
|
+
assert_response :success
|
7
|
+
assert_not_nil assigns(:people)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_should_get_new
|
11
|
+
get :new
|
12
|
+
assert_response :success
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_should_create_person
|
16
|
+
assert_difference('Person.count') do
|
17
|
+
post :create, :person => { :name => 'lifo', :address => 'lala land', :age => 420 }
|
18
|
+
end
|
19
|
+
|
20
|
+
assert_redirected_to person_path(assigns(:person))
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_should_show_person
|
24
|
+
get :show, :id => people(:one).id
|
25
|
+
assert_response :success
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_should_get_edit
|
29
|
+
get :edit, :id => people(:one).id
|
30
|
+
assert_response :success
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_should_update_person
|
34
|
+
put :update, :id => people(:one).id, :person => { }
|
35
|
+
assert_redirected_to person_path(assigns(:person))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_should_destroy_person
|
39
|
+
assert_difference('Person.count', -1) do
|
40
|
+
delete :destroy, :id => people(:one).id
|
41
|
+
end
|
42
|
+
|
43
|
+
assert_redirected_to people_path
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
3
|
+
require 'test_help'
|
4
|
+
|
5
|
+
class Test::Unit::TestCase
|
6
|
+
self.use_transactional_fixtures = true
|
7
|
+
self.use_instantiated_fixtures = false
|
8
|
+
|
9
|
+
fixtures :all
|
10
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class PersonTest < ActiveSupport::TestCase
|
4
|
+
def setup
|
5
|
+
super
|
6
|
+
@person = Person.find :first
|
7
|
+
@lazy = ['history', 'bio'].to_set
|
8
|
+
@columns = Person.column_names.to_set - ['id']
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_lazy_attributes_values
|
12
|
+
assert_equal @lazy, @person.class.lazy_attributes
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_quoted_attributes_should_include_all_columns
|
16
|
+
assert_equal @columns, @person.send(:attributes_with_quotes).keys.to_set.delete('id')
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_quoted_attributes_should_exclude_lazy_columns_for_updates
|
20
|
+
assert_equal @columns - @lazy, attr_for_update(@person)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_changed_lazy_attributes_behave_well
|
24
|
+
@person.name = "Whatever"
|
25
|
+
assert_equal @columns - @lazy, attr_for_update(@person)
|
26
|
+
|
27
|
+
@person.bio = "Hello world"
|
28
|
+
assert_equal @columns - ['history'], attr_for_update(@person)
|
29
|
+
|
30
|
+
@person.history = "Nothing."
|
31
|
+
assert_equal @columns, attr_for_update(@person)
|
32
|
+
|
33
|
+
assert @person.save!
|
34
|
+
@person.reload
|
35
|
+
|
36
|
+
assert_equal "Nothing.", @person.history
|
37
|
+
assert_equal "Whatever", @person.name
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_save_clears_lazy_data
|
41
|
+
@person.bio = "DSL"
|
42
|
+
assert_equal @columns - ['history'], attr_for_update(@person)
|
43
|
+
|
44
|
+
assert @person.save
|
45
|
+
assert_equal @columns - @lazy, attr_for_update(@person)
|
46
|
+
assert_equal "DSL", @person.bio
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_reload_clears_lazy_data
|
50
|
+
@person.bio = "Shenanigans"
|
51
|
+
@person.history = "Bloody"
|
52
|
+
assert_equal @columns, attr_for_update(@person)
|
53
|
+
|
54
|
+
assert @person.reload
|
55
|
+
|
56
|
+
assert_equal @columns - @lazy, attr_for_update(@person)
|
57
|
+
end
|
58
|
+
|
59
|
+
private
|
60
|
+
|
61
|
+
def attr_for_update(person)
|
62
|
+
person.send(:attributes_with_quotes, false, false).keys.to_set
|
63
|
+
end
|
64
|
+
end
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: railsex
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "1.2"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ""
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2007-12-20 00:00:00 +00:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: ""
|
17
|
+
email: ""
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- CHANGELOG
|
26
|
+
- init.rb
|
27
|
+
- lib/actionpack/mime_responds_extension.rb
|
28
|
+
- lib/activerecord/changed.rb
|
29
|
+
- lib/railties/console.rb
|
30
|
+
- LICENSE
|
31
|
+
- Manifest
|
32
|
+
- README
|
33
|
+
- test/app/controllers/application.rb
|
34
|
+
- test/app/controllers/people_controller.rb
|
35
|
+
- test/app/helpers/application_helper.rb
|
36
|
+
- test/app/helpers/people_helper.rb
|
37
|
+
- test/app/models/person.rb
|
38
|
+
- test/app/views/layouts/application.html.erb
|
39
|
+
- test/app/views/people/edit.html.erb
|
40
|
+
- test/app/views/people/index.html.erb
|
41
|
+
- test/app/views/people/new.html.erb
|
42
|
+
- test/app/views/people/show.html.erb
|
43
|
+
- test/config/boot.rb
|
44
|
+
- test/config/database.yml
|
45
|
+
- test/config/environment.rb
|
46
|
+
- test/config/environments/development.rb
|
47
|
+
- test/config/environments/production.rb
|
48
|
+
- test/config/environments/test.rb
|
49
|
+
- test/config/routes.rb
|
50
|
+
- test/db/development.sqlite3
|
51
|
+
- test/db/migrate/001_create_people.rb
|
52
|
+
- test/db/migrate/002_add_stuff_to_person.rb
|
53
|
+
- test/db/schema.rb
|
54
|
+
- test/db/test.sqlite3
|
55
|
+
- test/public/404.html
|
56
|
+
- test/public/422.html
|
57
|
+
- test/public/500.html
|
58
|
+
- test/public/dispatch.cgi
|
59
|
+
- test/public/dispatch.fcgi
|
60
|
+
- test/public/dispatch.rb
|
61
|
+
- test/public/favicon.ico
|
62
|
+
- test/Rakefile
|
63
|
+
- test/script/about
|
64
|
+
- test/script/console
|
65
|
+
- test/script/destroy
|
66
|
+
- test/script/generate
|
67
|
+
- test/script/performance/benchmarker
|
68
|
+
- test/script/performance/profiler
|
69
|
+
- test/script/performance/request
|
70
|
+
- test/script/plugin
|
71
|
+
- test/script/process/inspector
|
72
|
+
- test/script/process/reaper
|
73
|
+
- test/script/process/spawner
|
74
|
+
- test/script/runner
|
75
|
+
- test/script/server
|
76
|
+
- test/test/fixtures/people.yml
|
77
|
+
- test/test/functional/people_controller_test.rb
|
78
|
+
- test/test/test_helper.rb
|
79
|
+
- test/test/unit/person_test.rb
|
80
|
+
- railsex.gemspec
|
81
|
+
has_rdoc: true
|
82
|
+
homepage: ""
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: "0"
|
93
|
+
version:
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: "0"
|
99
|
+
version:
|
100
|
+
requirements: []
|
101
|
+
|
102
|
+
rubyforge_project: railsex
|
103
|
+
rubygems_version: 0.9.5
|
104
|
+
signing_key:
|
105
|
+
specification_version: 2
|
106
|
+
summary: ""
|
107
|
+
test_files:
|
108
|
+
- test/test/test_helper.rb
|