bootstrap_helper 2.1.2 → 2.1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/.rspec +1 -0
  2. data/CHANGELOG +1 -0
  3. data/Gemfile +4 -0
  4. data/bootstrap_helper.gemspec +3 -0
  5. data/config/initializers/simple_form.rb +142 -140
  6. data/lib/bootstrap_helper.rb +2 -0
  7. data/lib/bootstrap_helper/engine.rb +1 -0
  8. data/lib/bootstrap_helper/helper.rb +1 -1
  9. data/lib/bootstrap_helper/version.rb +1 -1
  10. data/spec/dummy/.rspec +1 -0
  11. data/spec/dummy/README.rdoc +261 -0
  12. data/spec/dummy/Rakefile +7 -0
  13. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  14. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  15. data/spec/dummy/app/controllers/application_controller.rb +6 -0
  16. data/spec/dummy/app/controllers/welcome_controller.rb +6 -0
  17. data/spec/dummy/app/helpers/application_helper.rb +3 -0
  18. data/spec/dummy/app/mailers/.gitkeep +0 -0
  19. data/spec/dummy/app/models/.gitkeep +0 -0
  20. data/spec/dummy/app/views/layouts/application.html.erb +15 -0
  21. data/spec/dummy/app/views/welcome/index.html.erb +0 -0
  22. data/spec/dummy/config.ru +4 -0
  23. data/spec/dummy/config/application.rb +65 -0
  24. data/spec/dummy/config/boot.rb +10 -0
  25. data/spec/dummy/config/database.yml +25 -0
  26. data/spec/dummy/config/environment.rb +5 -0
  27. data/spec/dummy/config/environments/development.rb +37 -0
  28. data/spec/dummy/config/environments/production.rb +67 -0
  29. data/spec/dummy/config/environments/test.rb +37 -0
  30. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  31. data/spec/dummy/config/initializers/inflections.rb +15 -0
  32. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  33. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  34. data/spec/dummy/config/initializers/session_store.rb +8 -0
  35. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  36. data/spec/dummy/config/locales/en.yml +5 -0
  37. data/spec/dummy/config/routes.rb +59 -0
  38. data/spec/dummy/db/test.sqlite3 +0 -0
  39. data/spec/dummy/lib/assets/.gitkeep +0 -0
  40. data/spec/dummy/log/.gitkeep +0 -0
  41. data/spec/dummy/log/development.log +0 -0
  42. data/spec/dummy/log/test.log +415 -0
  43. data/spec/dummy/public/404.html +26 -0
  44. data/spec/dummy/public/422.html +26 -0
  45. data/spec/dummy/public/500.html +25 -0
  46. data/spec/dummy/public/favicon.ico +0 -0
  47. data/spec/dummy/script/rails +6 -0
  48. data/spec/helpers/application_helper_spec.rb +110 -0
  49. data/spec/integration/view_homepage_spec.rb +15 -0
  50. data/spec/spec_helper.rb +44 -0
  51. metadata +132 -8
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/CHANGELOG CHANGED
@@ -1,3 +1,4 @@
1
+ * 2.1.2.1 add if defined?(SimpleForm)
1
2
  * 2.1.2 fix breadcurm should be plaintext item
2
3
  * 2.1.1 fix simple_form decrappted warning
3
4
  * 2.1.0 add will_paginate & simple_form template initializer for bootstrap
data/Gemfile CHANGED
@@ -2,3 +2,7 @@ source 'http://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in bootstrap-rails.gemspec
4
4
  gemspec
5
+
6
+
7
+
8
+ gem "simple_form"
@@ -19,6 +19,9 @@ Gem::Specification.new do |gem|
19
19
  gem.add_dependency "thor", "~> 0.14"
20
20
  gem.add_dependency "simple_form", "~> 2.0.2"
21
21
  gem.add_dependency "will_paginate", '>= 3.0.3'
22
+ gem.add_development_dependency("rspec-rails")
23
+ gem.add_development_dependency("capybara", ">= 0.4.0")
24
+ gem.add_development_dependency("sqlite3")
22
25
  gem.add_development_dependency "bundler", ">= 1.0.0"
23
26
  gem.add_development_dependency "rails", "~> 3.0"
24
27
  end
@@ -1,178 +1,180 @@
1
1
  # Use this setup block to configure all options available in SimpleForm.
2
- SimpleForm.setup do |config|
3
- # Wrappers are used by the form builder to generate a
4
- # complete input. You can remove any component from the
5
- # wrapper, change the order or even add your own to the
6
- # stack. The options given below are used to wrap the
7
- # whole input.
8
- config.wrappers :default, :class => :input,
2
+ if defined?(SimpleForm)
3
+ SimpleForm.setup do |config|
4
+ # Wrappers are used by the form builder to generate a
5
+ # complete input. You can remove any component from the
6
+ # wrapper, change the order or even add your own to the
7
+ # stack. The options given below are used to wrap the
8
+ # whole input.
9
+ config.wrappers :default, :class => :input,
9
10
  :hint_class => :field_with_hint, :error_class => :field_with_errors do |b|
10
- ## Extensions enabled by default
11
- # Any of these extensions can be disabled for a
12
- # given input by passing: `f.input EXTENSION_NAME => false`.
13
- # You can make any of these extensions optional by
14
- # renaming `b.use` to `b.optional`.
15
-
16
- # Determines whether to use HTML5 (:email, :url, ...)
17
- # and required attributes
18
- b.use :html5
19
-
20
- # Calculates placeholders automatically from I18n
21
- # You can also pass a string as f.input :placeholder => "Placeholder"
22
- b.use :placeholder
23
-
24
- ## Optional extensions
25
- # They are disabled unless you pass `f.input EXTENSION_NAME => :lookup`
26
- # to the input. If so, they will retrieve the values from the model
27
- # if any exists. If you want to enable the lookup for any of those
28
- # extensions by default, you can change `b.optional` to `b.use`.
29
-
30
- # Calculates maxlength from length validations for string inputs
31
- b.optional :maxlength
32
-
33
- # Calculates pattern from format validations for string inputs
34
- b.optional :pattern
35
-
36
- # Calculates min and max from length validations for numeric inputs
37
- b.optional :min_max
38
-
39
- # Calculates readonly automatically from readonly attributes
40
- b.optional :readonly
41
-
42
- ## Inputs
43
- b.use :label_input
44
- b.use :hint, :wrap_with => { :tag => :span, :class => :hint }
45
- b.use :error, :wrap_with => { :tag => :span, :class => :error }
46
- end
11
+ ## Extensions enabled by default
12
+ # Any of these extensions can be disabled for a
13
+ # given input by passing: `f.input EXTENSION_NAME => false`.
14
+ # You can make any of these extensions optional by
15
+ # renaming `b.use` to `b.optional`.
16
+
17
+ # Determines whether to use HTML5 (:email, :url, ...)
18
+ # and required attributes
19
+ b.use :html5
20
+
21
+ # Calculates placeholders automatically from I18n
22
+ # You can also pass a string as f.input :placeholder => "Placeholder"
23
+ b.use :placeholder
24
+
25
+ ## Optional extensions
26
+ # They are disabled unless you pass `f.input EXTENSION_NAME => :lookup`
27
+ # to the input. If so, they will retrieve the values from the model
28
+ # if any exists. If you want to enable the lookup for any of those
29
+ # extensions by default, you can change `b.optional` to `b.use`.
30
+
31
+ # Calculates maxlength from length validations for string inputs
32
+ b.optional :maxlength
33
+
34
+ # Calculates pattern from format validations for string inputs
35
+ b.optional :pattern
36
+
37
+ # Calculates min and max from length validations for numeric inputs
38
+ b.optional :min_max
39
+
40
+ # Calculates readonly automatically from readonly attributes
41
+ b.optional :readonly
42
+
43
+ ## Inputs
44
+ b.use :label_input
45
+ b.use :hint, :wrap_with => { :tag => :span, :class => :hint }
46
+ b.use :error, :wrap_with => { :tag => :span, :class => :error }
47
+ end
47
48
 
48
- config.wrappers :bootstrap, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
49
- b.use :html5
50
- b.use :placeholder
51
- b.use :label
52
- b.wrapper :tag => 'div', :class => 'controls' do |ba|
53
- ba.use :input
54
- ba.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
55
- ba.use :hint, :wrap_with => { :tag => 'p', :class => 'help-block' }
49
+ config.wrappers :bootstrap, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
50
+ b.use :html5
51
+ b.use :placeholder
52
+ b.use :label
53
+ b.wrapper :tag => 'div', :class => 'controls' do |ba|
54
+ ba.use :input
55
+ ba.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
56
+ ba.use :hint, :wrap_with => { :tag => 'p', :class => 'help-block' }
57
+ end
56
58
  end
57
- end
58
59
 
59
- config.wrappers :prepend, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
60
- b.use :html5
61
- b.use :placeholder
62
- b.use :label
63
- b.wrapper :tag => 'div', :class => 'controls' do |input|
64
- input.wrapper :tag => 'div', :class => 'input-prepend' do |prepend|
65
- prepend.use :input
60
+ config.wrappers :prepend, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
61
+ b.use :html5
62
+ b.use :placeholder
63
+ b.use :label
64
+ b.wrapper :tag => 'div', :class => 'controls' do |input|
65
+ input.wrapper :tag => 'div', :class => 'input-prepend' do |prepend|
66
+ prepend.use :input
67
+ end
68
+ input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
69
+ input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
66
70
  end
67
- input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
68
- input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
69
71
  end
70
- end
71
72
 
72
- config.wrappers :append, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
73
- b.use :html5
74
- b.use :placeholder
75
- b.use :label
76
- b.wrapper :tag => 'div', :class => 'controls' do |input|
77
- input.wrapper :tag => 'div', :class => 'input-append' do |append|
78
- append.use :input
73
+ config.wrappers :append, :tag => 'div', :class => "control-group", :error_class => 'error' do |b|
74
+ b.use :html5
75
+ b.use :placeholder
76
+ b.use :label
77
+ b.wrapper :tag => 'div', :class => 'controls' do |input|
78
+ input.wrapper :tag => 'div', :class => 'input-append' do |append|
79
+ append.use :input
80
+ end
81
+ input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
82
+ input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
79
83
  end
80
- input.use :hint, :wrap_with => { :tag => 'span', :class => 'help-block' }
81
- input.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
82
84
  end
83
- end
84
85
 
85
- # Wrappers for forms and inputs using the Twitter Bootstrap toolkit.
86
- # Check the Bootstrap docs (http://twitter.github.com/bootstrap)
87
- # to learn about the different styles for forms and inputs,
88
- # buttons and other elements.
89
- config.default_wrapper = :bootstrap
86
+ # Wrappers for forms and inputs using the Twitter Bootstrap toolkit.
87
+ # Check the Bootstrap docs (http://twitter.github.com/bootstrap)
88
+ # to learn about the different styles for forms and inputs,
89
+ # buttons and other elements.
90
+ config.default_wrapper = :bootstrap
90
91
 
91
- # Define the way to render check boxes / radio buttons with labels.
92
- # Defaults to :nested for bootstrap config.
93
- # :inline => input + label
94
- # :nested => label > input
95
- config.boolean_style = :nested
92
+ # Define the way to render check boxes / radio buttons with labels.
93
+ # Defaults to :nested for bootstrap config.
94
+ # :inline => input + label
95
+ # :nested => label > input
96
+ config.boolean_style = :nested
96
97
 
97
- # Default class for buttons
98
- config.button_class = 'btn'
98
+ # Default class for buttons
99
+ config.button_class = 'btn'
99
100
 
100
- # Method used to tidy up errors. Specify any Rails Array method.
101
- # :first lists the first message for each field.
102
- # Use :to_sentence to list all errors for each field.
103
- # config.error_method = :first
101
+ # Method used to tidy up errors. Specify any Rails Array method.
102
+ # :first lists the first message for each field.
103
+ # Use :to_sentence to list all errors for each field.
104
+ # config.error_method = :first
104
105
 
105
- # Default tag used for error notification helper.
106
- config.error_notification_tag = :div
106
+ # Default tag used for error notification helper.
107
+ config.error_notification_tag = :div
107
108
 
108
- # CSS class to add for error notification helper.
109
- config.error_notification_class = 'alert alert-error'
109
+ # CSS class to add for error notification helper.
110
+ config.error_notification_class = 'alert alert-error'
110
111
 
111
- # ID to add for error notification helper.
112
- # config.error_notification_id = nil
112
+ # ID to add for error notification helper.
113
+ # config.error_notification_id = nil
113
114
 
114
- # Series of attempts to detect a default label method for collection.
115
- # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
115
+ # Series of attempts to detect a default label method for collection.
116
+ # config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
116
117
 
117
- # Series of attempts to detect a default value method for collection.
118
- # config.collection_value_methods = [ :id, :to_s ]
118
+ # Series of attempts to detect a default value method for collection.
119
+ # config.collection_value_methods = [ :id, :to_s ]
119
120
 
120
- # You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
121
- # config.collection_wrapper_tag = nil
121
+ # You can wrap a collection of radio/check boxes in a pre-defined tag, defaulting to none.
122
+ # config.collection_wrapper_tag = nil
122
123
 
123
- # You can define the class to use on all collection wrappers. Defaulting to none.
124
- # config.collection_wrapper_class = nil
124
+ # You can define the class to use on all collection wrappers. Defaulting to none.
125
+ # config.collection_wrapper_class = nil
125
126
 
126
- # You can wrap each item in a collection of radio/check boxes with a tag,
127
- # defaulting to :span. Please note that when using :boolean_style = :nested,
128
- # SimpleForm will force this option to be a label.
129
- # config.item_wrapper_tag = :span
127
+ # You can wrap each item in a collection of radio/check boxes with a tag,
128
+ # defaulting to :span. Please note that when using :boolean_style = :nested,
129
+ # SimpleForm will force this option to be a label.
130
+ # config.item_wrapper_tag = :span
130
131
 
131
- # You can define a class to use in all item wrappers. Defaulting to none.
132
- # config.item_wrapper_class = nil
132
+ # You can define a class to use in all item wrappers. Defaulting to none.
133
+ # config.item_wrapper_class = nil
133
134
 
134
- # How the label text should be generated altogether with the required text.
135
- # config.label_text = lambda { |label, required| "#{required} #{label}" }
135
+ # How the label text should be generated altogether with the required text.
136
+ # config.label_text = lambda { |label, required| "#{required} #{label}" }
136
137
 
137
- # You can define the class to use on all labels. Default is nil.
138
- config.label_class = 'control-label'
138
+ # You can define the class to use on all labels. Default is nil.
139
+ config.label_class = 'control-label'
139
140
 
140
- # You can define the class to use on all forms. Default is simple_form.
141
- # config.form_class = :simple_form
141
+ # You can define the class to use on all forms. Default is simple_form.
142
+ # config.form_class = :simple_form
142
143
 
143
- # You can define which elements should obtain additional classes
144
- # config.generate_additional_classes_for = [:wrapper, :label, :input]
144
+ # You can define which elements should obtain additional classes
145
+ # config.generate_additional_classes_for = [:wrapper, :label, :input]
145
146
 
146
- # Whether attributes are required by default (or not). Default is true.
147
- # config.required_by_default = true
147
+ # Whether attributes are required by default (or not). Default is true.
148
+ # config.required_by_default = true
148
149
 
149
- # Tell browsers whether to use default HTML5 validations (novalidate option).
150
- # Default is enabled.
151
- config.browser_validations = false
150
+ # Tell browsers whether to use default HTML5 validations (novalidate option).
151
+ # Default is enabled.
152
+ config.browser_validations = false
152
153
 
153
- # Collection of methods to detect if a file type was given.
154
- # config.file_methods = [ :mounted_as, :file?, :public_filename ]
154
+ # Collection of methods to detect if a file type was given.
155
+ # config.file_methods = [ :mounted_as, :file?, :public_filename ]
155
156
 
156
- # Custom mappings for input types. This should be a hash containing a regexp
157
- # to match as key, and the input type that will be used when the field name
158
- # matches the regexp as value.
159
- # config.input_mappings = { /count/ => :integer }
157
+ # Custom mappings for input types. This should be a hash containing a regexp
158
+ # to match as key, and the input type that will be used when the field name
159
+ # matches the regexp as value.
160
+ # config.input_mappings = { /count/ => :integer }
160
161
 
161
- # Default priority for time_zone inputs.
162
- # config.time_zone_priority = nil
162
+ # Default priority for time_zone inputs.
163
+ # config.time_zone_priority = nil
163
164
 
164
- # Default priority for country inputs.
165
- # config.country_priority = nil
165
+ # Default priority for country inputs.
166
+ # config.country_priority = nil
166
167
 
167
- # Default size for text inputs.
168
- # config.default_input_size = 50
168
+ # Default size for text inputs.
169
+ # config.default_input_size = 50
169
170
 
170
- # When false, do not use translations for labels.
171
- # config.translate_labels = true
171
+ # When false, do not use translations for labels.
172
+ # config.translate_labels = true
172
173
 
173
- # Automatically discover new inputs in Rails' autoload path.
174
- # config.inputs_discovery = true
174
+ # Automatically discover new inputs in Rails' autoload path.
175
+ # config.inputs_discovery = true
175
176
 
176
- # Cache SimpleForm inputs discovery
177
- # config.cache_discovery = !Rails.env.development?
177
+ # Cache SimpleForm inputs discovery
178
+ # config.cache_discovery = !Rails.env.development?
179
+ end
178
180
  end
@@ -1,4 +1,6 @@
1
+ require "rails"
1
2
  require "bootstrap_helper/version"
3
+ require "action_view"
2
4
 
3
5
  module BootstrapHelper
4
6
  module Rails
@@ -1,5 +1,6 @@
1
1
  require "bootstrap_helper/helper"
2
2
  require "bootstrap_helper/breadcrumb"
3
+
3
4
  module BootstrapHelper
4
5
  module Rails
5
6
  class Engine < ::Rails::Engine
@@ -39,7 +39,7 @@ module BootstrapHelper
39
39
 
40
40
 
41
41
  def s(html)
42
- sanitize( html, :tags => %w(table thead tbody tr td th ol ul li div span font img sup sub br hr a pre p h1 h2 h3 h4 h5 h6), :attributes => %w(id class style src href size color) )
42
+ sanitize( html, :tags => %w(table thead tbody tr td th ol ul li div span font img sup sub br hr a pre p h1 h2 h3 h4 h5 h6), :attributes => %w(style src href size color) )
43
43
  end
44
44
 
45
45
  def render_table(rows, renderrers, table_options = {})
@@ -1,5 +1,5 @@
1
1
  module BootstrapHelper
2
2
  module Rails
3
- VERSION = "2.1.2"
3
+ VERSION = "2.1.2.1"
4
4
  end
5
5
  end
data/spec/dummy/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,261 @@
1
+ == Welcome to Rails
2
+
3
+ Rails is a web-application framework that includes everything needed to create
4
+ database-backed web applications according to the Model-View-Control pattern.
5
+
6
+ This pattern splits the view (also called the presentation) into "dumb"
7
+ templates that are primarily responsible for inserting pre-built data in between
8
+ HTML tags. The model contains the "smart" domain objects (such as Account,
9
+ Product, Person, Post) that holds all the business logic and knows how to
10
+ persist themselves to a database. The controller handles the incoming requests
11
+ (such as Save New Account, Update Product, Show Post) by manipulating the model
12
+ and directing data to the view.
13
+
14
+ In Rails, the model is handled by what's called an object-relational mapping
15
+ layer entitled Active Record. This layer allows you to present the data from
16
+ database rows as objects and embellish these data objects with business logic
17
+ methods. You can read more about Active Record in
18
+ link:files/vendor/rails/activerecord/README.html.
19
+
20
+ The controller and view are handled by the Action Pack, which handles both
21
+ layers by its two parts: Action View and Action Controller. These two layers
22
+ are bundled in a single package due to their heavy interdependence. This is
23
+ unlike the relationship between the Active Record and Action Pack that is much
24
+ more separate. Each of these packages can be used independently outside of
25
+ Rails. You can read more about Action Pack in
26
+ link:files/vendor/rails/actionpack/README.html.
27
+
28
+
29
+ == Getting Started
30
+
31
+ 1. At the command prompt, create a new Rails application:
32
+ <tt>rails new myapp</tt> (where <tt>myapp</tt> is the application name)
33
+
34
+ 2. Change directory to <tt>myapp</tt> and start the web server:
35
+ <tt>cd myapp; rails server</tt> (run with --help for options)
36
+
37
+ 3. Go to http://localhost:3000/ and you'll see:
38
+ "Welcome aboard: You're riding Ruby on Rails!"
39
+
40
+ 4. Follow the guidelines to start developing your application. You can find
41
+ the following resources handy:
42
+
43
+ * The Getting Started Guide: http://guides.rubyonrails.org/getting_started.html
44
+ * Ruby on Rails Tutorial Book: http://www.railstutorial.org/
45
+
46
+
47
+ == Debugging Rails
48
+
49
+ Sometimes your application goes wrong. Fortunately there are a lot of tools that
50
+ will help you debug it and get it back on the rails.
51
+
52
+ First area to check is the application log files. Have "tail -f" commands
53
+ running on the server.log and development.log. Rails will automatically display
54
+ debugging and runtime information to these files. Debugging info will also be
55
+ shown in the browser on requests from 127.0.0.1.
56
+
57
+ You can also log your own messages directly into the log file from your code
58
+ using the Ruby logger class from inside your controllers. Example:
59
+
60
+ class WeblogController < ActionController::Base
61
+ def destroy
62
+ @weblog = Weblog.find(params[:id])
63
+ @weblog.destroy
64
+ logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!")
65
+ end
66
+ end
67
+
68
+ The result will be a message in your log file along the lines of:
69
+
70
+ Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1!
71
+
72
+ More information on how to use the logger is at http://www.ruby-doc.org/core/
73
+
74
+ Also, Ruby documentation can be found at http://www.ruby-lang.org/. There are
75
+ several books available online as well:
76
+
77
+ * Programming Ruby: http://www.ruby-doc.org/docs/ProgrammingRuby/ (Pickaxe)
78
+ * Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide)
79
+
80
+ These two books will bring you up to speed on the Ruby language and also on
81
+ programming in general.
82
+
83
+
84
+ == Debugger
85
+
86
+ Debugger support is available through the debugger command when you start your
87
+ Mongrel or WEBrick server with --debugger. This means that you can break out of
88
+ execution at any point in the code, investigate and change the model, and then,
89
+ resume execution! You need to install ruby-debug to run the server in debugging
90
+ mode. With gems, use <tt>sudo gem install ruby-debug</tt>. Example:
91
+
92
+ class WeblogController < ActionController::Base
93
+ def index
94
+ @posts = Post.all
95
+ debugger
96
+ end
97
+ end
98
+
99
+ So the controller will accept the action, run the first line, then present you
100
+ with a IRB prompt in the server window. Here you can do things like:
101
+
102
+ >> @posts.inspect
103
+ => "[#<Post:0x14a6be8
104
+ @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>,
105
+ #<Post:0x14a6620
106
+ @attributes={"title"=>"Rails", "body"=>"Only ten..", "id"=>"2"}>]"
107
+ >> @posts.first.title = "hello from a debugger"
108
+ => "hello from a debugger"
109
+
110
+ ...and even better, you can examine how your runtime objects actually work:
111
+
112
+ >> f = @posts.first
113
+ => #<Post:0x13630c4 @attributes={"title"=>nil, "body"=>nil, "id"=>"1"}>
114
+ >> f.
115
+ Display all 152 possibilities? (y or n)
116
+
117
+ Finally, when you're ready to resume execution, you can enter "cont".
118
+
119
+
120
+ == Console
121
+
122
+ The console is a Ruby shell, which allows you to interact with your
123
+ application's domain model. Here you'll have all parts of the application
124
+ configured, just like it is when the application is running. You can inspect
125
+ domain models, change values, and save to the database. Starting the script
126
+ without arguments will launch it in the development environment.
127
+
128
+ To start the console, run <tt>rails console</tt> from the application
129
+ directory.
130
+
131
+ Options:
132
+
133
+ * Passing the <tt>-s, --sandbox</tt> argument will rollback any modifications
134
+ made to the database.
135
+ * Passing an environment name as an argument will load the corresponding
136
+ environment. Example: <tt>rails console production</tt>.
137
+
138
+ To reload your controllers and models after launching the console run
139
+ <tt>reload!</tt>
140
+
141
+ More information about irb can be found at:
142
+ link:http://www.rubycentral.org/pickaxe/irb.html
143
+
144
+
145
+ == dbconsole
146
+
147
+ You can go to the command line of your database directly through <tt>rails
148
+ dbconsole</tt>. You would be connected to the database with the credentials
149
+ defined in database.yml. Starting the script without arguments will connect you
150
+ to the development database. Passing an argument will connect you to a different
151
+ database, like <tt>rails dbconsole production</tt>. Currently works for MySQL,
152
+ PostgreSQL and SQLite 3.
153
+
154
+ == Description of Contents
155
+
156
+ The default directory structure of a generated Ruby on Rails application:
157
+
158
+ |-- app
159
+ | |-- assets
160
+ | |-- images
161
+ | |-- javascripts
162
+ | `-- stylesheets
163
+ | |-- controllers
164
+ | |-- helpers
165
+ | |-- mailers
166
+ | |-- models
167
+ | `-- views
168
+ | `-- layouts
169
+ |-- config
170
+ | |-- environments
171
+ | |-- initializers
172
+ | `-- locales
173
+ |-- db
174
+ |-- doc
175
+ |-- lib
176
+ | `-- tasks
177
+ |-- log
178
+ |-- public
179
+ |-- script
180
+ |-- test
181
+ | |-- fixtures
182
+ | |-- functional
183
+ | |-- integration
184
+ | |-- performance
185
+ | `-- unit
186
+ |-- tmp
187
+ | |-- cache
188
+ | |-- pids
189
+ | |-- sessions
190
+ | `-- sockets
191
+ `-- vendor
192
+ |-- assets
193
+ `-- stylesheets
194
+ `-- plugins
195
+
196
+ app
197
+ Holds all the code that's specific to this particular application.
198
+
199
+ app/assets
200
+ Contains subdirectories for images, stylesheets, and JavaScript files.
201
+
202
+ app/controllers
203
+ Holds controllers that should be named like weblogs_controller.rb for
204
+ automated URL mapping. All controllers should descend from
205
+ ApplicationController which itself descends from ActionController::Base.
206
+
207
+ app/models
208
+ Holds models that should be named like post.rb. Models descend from
209
+ ActiveRecord::Base by default.
210
+
211
+ app/views
212
+ Holds the template files for the view that should be named like
213
+ weblogs/index.html.erb for the WeblogsController#index action. All views use
214
+ eRuby syntax by default.
215
+
216
+ app/views/layouts
217
+ Holds the template files for layouts to be used with views. This models the
218
+ common header/footer method of wrapping views. In your views, define a layout
219
+ using the <tt>layout :default</tt> and create a file named default.html.erb.
220
+ Inside default.html.erb, call <% yield %> to render the view using this
221
+ layout.
222
+
223
+ app/helpers
224
+ Holds view helpers that should be named like weblogs_helper.rb. These are
225
+ generated for you automatically when using generators for controllers.
226
+ Helpers can be used to wrap functionality for your views into methods.
227
+
228
+ config
229
+ Configuration files for the Rails environment, the routing map, the database,
230
+ and other dependencies.
231
+
232
+ db
233
+ Contains the database schema in schema.rb. db/migrate contains all the
234
+ sequence of Migrations for your schema.
235
+
236
+ doc
237
+ This directory is where your application documentation will be stored when
238
+ generated using <tt>rake doc:app</tt>
239
+
240
+ lib
241
+ Application specific libraries. Basically, any kind of custom code that
242
+ doesn't belong under controllers, models, or helpers. This directory is in
243
+ the load path.
244
+
245
+ public
246
+ The directory available for the web server. Also contains the dispatchers and the
247
+ default HTML files. This should be set as the DOCUMENT_ROOT of your web
248
+ server.
249
+
250
+ script
251
+ Helper scripts for automation and generation.
252
+
253
+ test
254
+ Unit and functional tests along with fixtures. When using the rails generate
255
+ command, template test files will be generated for you and placed in this
256
+ directory.
257
+
258
+ vendor
259
+ External libraries that the application depends on. Also includes the plugins
260
+ subdirectory. If the app has frozen rails, those gems also go here, under
261
+ vendor/rails/. This directory is in the load path.