|
1 | | -== Welcome to Rails |
| 1 | +# Upload files with jQuery File Upload and Paperclip |
2 | 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. |
| 3 | +This is an example app that uses the following gems to upload files for your Rails application: |
5 | 4 |
|
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. |
| 5 | +* [jquery-fileupload-rails](https://github.com/tors/jquery-fileupload-rails) |
| 6 | +* [Paperclip](https://github.com/thoughtbot/paperclip) |
13 | 7 |
|
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. |
| 8 | +This app also uses [twitter-bootstrap-rails](https://github.com/seyhunak/twitter-bootstrap-rails) but is not required. |
19 | 9 |
|
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. |
| 10 | +This app uses Rails 3.2.6. |
27 | 11 |
|
| 12 | +## Running the app |
28 | 13 |
|
29 | | -== Getting Started |
| 14 | + rake db:create |
| 15 | + rake db:migrate |
| 16 | + rails server |
30 | 17 |
|
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) |
| 18 | +Open http:://localhost:3000 |
33 | 19 |
|
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) |
| 20 | +## License |
| 21 | +The Unlicense (i.e Public Domain) |
36 | 22 |
|
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. |
0 commit comments