Commit 160158448d1e691b7b2c6d2ad2f9c47c4c44cf62
1 parent
401eb567
Exists in
master
and in
1 other branch
Add a stub Readme file
Showing
2 changed files
with
6 additions
and
256 deletions
Show diff stats
README
@@ -1,256 +0,0 @@ | @@ -1,256 +0,0 @@ | ||
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.find(: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.com/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 | - | |-- controllers | ||
160 | - | |-- helpers | ||
161 | - | |-- models | ||
162 | - | `-- views | ||
163 | - | `-- layouts | ||
164 | - |-- config | ||
165 | - | |-- environments | ||
166 | - | |-- initializers | ||
167 | - | `-- locales | ||
168 | - |-- db | ||
169 | - |-- doc | ||
170 | - |-- lib | ||
171 | - | `-- tasks | ||
172 | - |-- log | ||
173 | - |-- public | ||
174 | - | |-- images | ||
175 | - | |-- javascripts | ||
176 | - | `-- stylesheets | ||
177 | - |-- script | ||
178 | - | `-- performance | ||
179 | - |-- test | ||
180 | - | |-- fixtures | ||
181 | - | |-- functional | ||
182 | - | |-- integration | ||
183 | - | |-- performance | ||
184 | - | `-- unit | ||
185 | - |-- tmp | ||
186 | - | |-- cache | ||
187 | - | |-- pids | ||
188 | - | |-- sessions | ||
189 | - | `-- sockets | ||
190 | - `-- vendor | ||
191 | - `-- plugins | ||
192 | - | ||
193 | -app | ||
194 | - Holds all the code that's specific to this particular application. | ||
195 | - | ||
196 | -app/controllers | ||
197 | - Holds controllers that should be named like weblogs_controller.rb for | ||
198 | - automated URL mapping. All controllers should descend from | ||
199 | - ApplicationController which itself descends from ActionController::Base. | ||
200 | - | ||
201 | -app/models | ||
202 | - Holds models that should be named like post.rb. Models descend from | ||
203 | - ActiveRecord::Base by default. | ||
204 | - | ||
205 | -app/views | ||
206 | - Holds the template files for the view that should be named like | ||
207 | - weblogs/index.html.erb for the WeblogsController#index action. All views use | ||
208 | - eRuby syntax by default. | ||
209 | - | ||
210 | -app/views/layouts | ||
211 | - Holds the template files for layouts to be used with views. This models the | ||
212 | - common header/footer method of wrapping views. In your views, define a layout | ||
213 | - using the <tt>layout :default</tt> and create a file named default.html.erb. | ||
214 | - Inside default.html.erb, call <% yield %> to render the view using this | ||
215 | - layout. | ||
216 | - | ||
217 | -app/helpers | ||
218 | - Holds view helpers that should be named like weblogs_helper.rb. These are | ||
219 | - generated for you automatically when using generators for controllers. | ||
220 | - Helpers can be used to wrap functionality for your views into methods. | ||
221 | - | ||
222 | -config | ||
223 | - Configuration files for the Rails environment, the routing map, the database, | ||
224 | - and other dependencies. | ||
225 | - | ||
226 | -db | ||
227 | - Contains the database schema in schema.rb. db/migrate contains all the | ||
228 | - sequence of Migrations for your schema. | ||
229 | - | ||
230 | -doc | ||
231 | - This directory is where your application documentation will be stored when | ||
232 | - generated using <tt>rake doc:app</tt> | ||
233 | - | ||
234 | -lib | ||
235 | - Application specific libraries. Basically, any kind of custom code that | ||
236 | - doesn't belong under controllers, models, or helpers. This directory is in | ||
237 | - the load path. | ||
238 | - | ||
239 | -public | ||
240 | - The directory available for the web server. Contains subdirectories for | ||
241 | - images, stylesheets, and javascripts. Also contains the dispatchers and the | ||
242 | - default HTML files. This should be set as the DOCUMENT_ROOT of your web | ||
243 | - server. | ||
244 | - | ||
245 | -script | ||
246 | - Helper scripts for automation and generation. | ||
247 | - | ||
248 | -test | ||
249 | - Unit and functional tests along with fixtures. When using the rails generate | ||
250 | - command, template test files will be generated for you and placed in this | ||
251 | - directory. | ||
252 | - | ||
253 | -vendor | ||
254 | - External libraries that the application depends on. Also includes the plugins | ||
255 | - subdirectory. If the app has frozen rails, those gems also go here, under | ||
256 | - vendor/rails/. This directory is in the load path. |