wbzyl-rails3-tutorial 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/README.markdown +14 -0
  2. data/Rakefile +34 -0
  3. data/TODO +6 -0
  4. data/VERSION.yml +4 -0
  5. data/config.ru +15 -0
  6. data/lib/config.ru +12 -0
  7. data/lib/public/images/bradypus.jpg +0 -0
  8. data/lib/public/images/leniwce_controller.png +0 -0
  9. data/lib/public/images/leniwce_controller.svg +284 -0
  10. data/lib/public/images/leniwiec.png +0 -0
  11. data/lib/public/images/leniwiec.svg +284 -0
  12. data/lib/public/images/mvc.png +0 -0
  13. data/lib/public/images/mvc.svg +243 -0
  14. data/lib/public/images/pablo_picasso.jpg +0 -0
  15. data/lib/public/images/pastie.png +0 -0
  16. data/lib/public/images/rails3.png +0 -0
  17. data/lib/public/images/rails3.svg +125 -0
  18. data/lib/public/images/the_thinker.jpg +0 -0
  19. data/lib/public/javascripts/ruby3.js +1 -0
  20. data/lib/public/stylesheets/icons/doc.png +0 -0
  21. data/lib/public/stylesheets/icons/email.png +0 -0
  22. data/lib/public/stylesheets/icons/external.png +0 -0
  23. data/lib/public/stylesheets/icons/feed.png +0 -0
  24. data/lib/public/stylesheets/icons/im.png +0 -0
  25. data/lib/public/stylesheets/icons/pdf.png +0 -0
  26. data/lib/public/stylesheets/icons/visited.png +0 -0
  27. data/lib/public/stylesheets/icons/xls.png +0 -0
  28. data/lib/public/stylesheets/ie.css +27 -0
  29. data/lib/public/stylesheets/print.css +30 -0
  30. data/lib/public/stylesheets/rails3.css +139 -0
  31. data/lib/public/stylesheets/screen.css +249 -0
  32. data/lib/public/stylesheets/src/grid.png +0 -0
  33. data/lib/public/stylesheets/uv.css +121 -0
  34. data/lib/rails3-tutorial.rb +72 -0
  35. data/lib/views/answers.rdiscount +0 -0
  36. data/lib/views/authentication.rdiscount +10 -0
  37. data/lib/views/blog.rdiscount +365 -0
  38. data/lib/views/caching.rdiscount +4 -0
  39. data/lib/views/exercises.rdiscount +67 -0
  40. data/lib/views/fortune.rdiscount +592 -0
  41. data/lib/views/intro.rdiscount +68 -0
  42. data/lib/views/layout.rdiscount +38 -0
  43. data/lib/views/main.rdiscount +32 -0
  44. data/lib/views/pastie.rdiscount +371 -0
  45. data/lib/views/store.rdiscount +99 -0
  46. data/lib/views/todo.rdiscount +245 -0
  47. data/rails3-tutorial.gemspec +101 -0
  48. metadata +168 -0
@@ -0,0 +1,99 @@
1
+ #### {% title "Store" %}
2
+
3
+ # Aplikacja: Store
4
+
5
+ Aplikacja jest wykorzystywana w screencastach
6
+ R. Batesa. Repozytorium do ściągnięcia z Githuba:
7
+
8
+ git://github.com/ryanb/railscasts-episodes.git
9
+ cd railscasts-episodes/templates/store
10
+
11
+ Katalog: *app*:
12
+
13
+ |-- app
14
+ | |-- controllers
15
+ | | |-- application_controller.rb
16
+ | | |-- categories_controller.rb
17
+ | | `-- products_controller.rb
18
+ | |-- helpers
19
+ | | |-- application_helper.rb
20
+ | | |-- categories_helper.rb
21
+ | | |-- layout_helper.rb
22
+ | | `-- products_helper.rb
23
+ | |-- models
24
+ | | |-- category.rb
25
+ | | `-- product.rb
26
+ | `-- views
27
+ | |-- categories
28
+ | | |-- _form.html.erb
29
+ | | |-- edit.html.erb
30
+ | | |-- index.html.erb
31
+ | | |-- new.html.erb
32
+ | | `-- show.html.erb
33
+ | |-- layouts
34
+ | | `-- application.html.erb
35
+ | `-- products
36
+ | |-- _form.html.erb
37
+ | |-- edit.html.erb
38
+ | |-- index.html.erb
39
+ | |-- new.html.erb
40
+ | `-- show.html.erb
41
+ |-- config
42
+ .
43
+ .
44
+ |-- db
45
+ | |-- development.sqlite3
46
+ | |-- migrate
47
+ | | |-- 20080621194238_create_categories.rb
48
+ | | `-- 20080621194423_create_products.rb
49
+ | `-- schema.rb
50
+ .
51
+ .
52
+ `-- vendor
53
+ `-- plugins
54
+
55
+ 28 directories, 73 files
56
+
57
+ Tak jak w wypadku aplikacji *Blog*,
58
+ aplikację *Store* zaczniemy analizować
59
+ od pliku *schema.rb*.
60
+ Następnie obejrzymy plik *routes.rb*.
61
+
62
+ Schemat bazy:
63
+
64
+ :::ruby
65
+ ActiveRecord::Schema.define(:version => 20080621194423) do
66
+
67
+ create_table "categories", :force => true do |t|
68
+ t.string "name"
69
+ t.datetime "created_at"
70
+ t.datetime "updated_at"
71
+ end
72
+
73
+ create_table "products", :force => true do |t|
74
+ t.integer "category_id"
75
+ t.string "name"
76
+ t.decimal "price"
77
+ t.text "description"
78
+ t.datetime "created_at"
79
+ t.datetime "updated_at"
80
+ end
81
+
82
+ end
83
+
84
+ Routing:
85
+
86
+ :::ruby
87
+ ActionController::Routing::Routes.draw do |map|
88
+ map.resources :products
89
+ map.resources :categories
90
+ map.root :products
91
+ end
92
+
93
+ Czy aplikacja *Store* chowa jakieś niespodzianki? TAK.
94
+
95
+
96
+ No to idziemy na poszukiwania:
97
+
98
+ rake db:migrate
99
+ script/server thin -p 3000
@@ -0,0 +1,245 @@
1
+ #### {% title "TODO" %}
2
+
3
+ # Aplikacja: Todo
4
+
5
+ Aplikacja jest wykorzystywana w screencastach
6
+ R. Batesa. Repozytorium do ściągnięcia z Githuba:
7
+
8
+ git://github.com/ryanb/railscasts-episodes.git
9
+ cd railscasts-episodes/templates/todo
10
+
11
+ Katalog: *app*:
12
+
13
+ |-- controllers
14
+ | |-- application_controller.rb
15
+ | |-- projects_controller.rb
16
+ | `-- tasks_controller.rb
17
+ |-- helpers
18
+ | |-- application_helper.rb
19
+ | |-- layout_helper.rb
20
+ | |-- projects_helper.rb
21
+ | `-- tasks_helper.rb
22
+ |-- models
23
+ | |-- project.rb
24
+ | `-- task.rb
25
+ `-- views
26
+ |-- layouts
27
+ | `-- application.html.erb
28
+ |-- projects
29
+ | |-- _form.html.erb
30
+ | |-- edit.html.erb
31
+ | |-- index.html.erb
32
+ | |-- new.html.erb
33
+ | `-- show.html.erb
34
+ `-- tasks
35
+ |-- _form.html.erb
36
+ |-- edit.html.erb
37
+ `-- new.html.erb
38
+
39
+ Migracje:
40
+
41
+ :::ruby
42
+ class CreateProjects < ActiveRecord::Migration
43
+ def self.up
44
+ create_table :projects do |t|
45
+ t.string :name
46
+ t.timestamps
47
+ end
48
+ end
49
+
50
+ def self.down
51
+ drop_table :projects
52
+ end
53
+ end
54
+
55
+ class CreateTasks < ActiveRecord::Migration
56
+ def self.up
57
+ create_table :tasks do |t|
58
+ t.integer :project_id
59
+ t.string :name
60
+ t.boolean :complete
61
+ t.timestamps
62
+ end
63
+ end
64
+
65
+ def self.down
66
+ drop_table :tasks
67
+ end
68
+ end
69
+
70
+ Modele:
71
+
72
+ :::ruby
73
+ class Project < ActiveRecord::Base
74
+ has_many :tasks
75
+ end
76
+
77
+ class Task < ActiveRecord::Base
78
+ belongs_to :project
79
+ end
80
+
81
+ Routing:
82
+
83
+ :::ruby
84
+ ActionController::Routing::Routes.draw do |map|
85
+ map.resources :projects, :tasks
86
+ map.root :projects
87
+ end
88
+
89
+ Kontroler *Project*:
90
+
91
+ :::ruby
92
+ class ProjectsController < ApplicationController
93
+ def index
94
+ @projects = Project.find(:all)
95
+ end
96
+
97
+ def show
98
+ @project = Project.find(params[:id])
99
+ end
100
+
101
+ def new
102
+ @project = Project.new
103
+ end
104
+
105
+ def create
106
+ @project = Project.new(params[:project])
107
+ if @project.save
108
+ flash[:notice] = "Successfully created project."
109
+ redirect_to @project
110
+ else
111
+ render :action => 'new'
112
+ end
113
+ end
114
+
115
+ def edit
116
+ @project = Project.find(params[:id])
117
+ end
118
+
119
+ def update
120
+ @project = Project.find(params[:id])
121
+ if @project.update_attributes(params[:project])
122
+ flash[:notice] = "Successfully updated project."
123
+ redirect_to @project
124
+ else
125
+ render :action => 'edit'
126
+ end
127
+ end
128
+
129
+ def destroy
130
+ @project = Project.find(params[:id])
131
+ @project.destroy
132
+ flash[:notice] = "Successfully destroyed project."
133
+ redirect_to projects_url
134
+ end
135
+ end
136
+
137
+ Kontroler *Task*:
138
+
139
+ :::ruby
140
+ class TasksController < ApplicationController
141
+ def new
142
+ @task = Task.new(:project_id => params[:project_id])
143
+ end
144
+
145
+ def create
146
+ @task = Task.new(params[:task])
147
+ if @task.save
148
+ flash[:notice] = "Successfully created task."
149
+ redirect_to @task.project
150
+ else
151
+ render :action => 'new'
152
+ end
153
+ end
154
+
155
+ def edit
156
+ @task = Task.find(params[:id])
157
+ end
158
+
159
+ def update
160
+ @task = Task.find(params[:id])
161
+ if @task.update_attributes(params[:task])
162
+ flash[:notice] = "Successfully updated task."
163
+ redirect_to @task.project
164
+ else
165
+ render :action => 'edit'
166
+ end
167
+ end
168
+
169
+ def destroy
170
+ @task = Task.find(params[:id])
171
+ @task.destroy
172
+ flash[:notice] = "Successfully destroyed task."
173
+ redirect_to @task.project
174
+ end
175
+ end
176
+
177
+ ## Widoki dla kontrolera *Projects*
178
+
179
+ Widok *index.html.erb*
180
+
181
+ :::html_rails
182
+ <% title "Projects" %>
183
+
184
+ <table>
185
+ <tr>
186
+ <th>Name</th>
187
+ </tr>
188
+ <% for project in @projects %>
189
+ <tr>
190
+ <td><%= link_to h(project.name), project %></td>
191
+ <td><%= link_to "Edit", edit_project_path(project) %></td>
192
+ <td><%= link_to "Destroy", project, :confirm => 'Are you sure?', :method => :delete %></td>
193
+ </tr>
194
+ <% end %>
195
+ </table>
196
+
197
+ <p><%= link_to "New Project", new_project_path %></p>
198
+
199
+ Widok: *show.html.erb*:
200
+
201
+ :::html_rails
202
+ <% title @project.name %>
203
+
204
+ <h2>Tasks</h2>
205
+ <ul>
206
+ <% for task in @project.tasks %>
207
+ <li>
208
+ <%=h task.name %>
209
+ (<%= link_to "Edit", edit_task_path(task) %> |
210
+ <%= link_to "Destroy", task, :confirm => "Are you sure?", :method => :delete %>)
211
+ </li>
212
+ <% end %>
213
+ </ul>
214
+
215
+ <p>
216
+ <!-- kluczowy wiersz kodu -->
217
+ <%= link_to "New Task", new_task_path(:project_id => @project) %> |
218
+ <%= link_to "View All Projects", projects_path %>
219
+ </p>
220
+
221
+ Reszta widoków jest standardowa.
222
+
223
+
224
+ ## Widoki dla kontrolera *Tasks*
225
+
226
+ Implemetujemy tylko widoki: *edit.html.erb* i *new.html.erb*.
227
+ Więcej widoków nie potrzebujemy.
228
+
229
+ Najciekawszy, ze wzgledu na *hidden_filed* jest widok częściowy
230
+ *_form.html.erb* dla widoków *edit.html.erb* i *new.html.erb*:
231
+
232
+ :::html_rails
233
+ <%= error_messages_for :task %>
234
+ <% form_for @task do |f| %>
235
+ <%= f.hidden_field :project_id %>
236
+ <p>
237
+ <%= f.label :name %><br />
238
+ <%= f.text_field :name %>
239
+ </p>
240
+ <p>
241
+ <%= f.check_box :complete %> <!-- niewykorzystane -->
242
+ <%= f.label :complete %>
243
+ </p>
244
+ <p><%= f.submit "Submit" %></p>
245
+ <% end %>
@@ -0,0 +1,101 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{rails3-tutorial}
5
+ s.version = "0.0.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Wlodek Bzyl"]
9
+ s.date = %q{2009-06-24}
10
+ s.description = %q{Notatki do frameworka Rails3
11
+ }
12
+ s.email = %q{matwb@univ.gda.pl}
13
+ s.extra_rdoc_files = [
14
+ "README.markdown"
15
+ ]
16
+ s.files = [
17
+ "Rakefile",
18
+ "TODO",
19
+ "VERSION.yml",
20
+ "config.ru",
21
+ "lib/config.ru",
22
+ "lib/public/images/bradypus.jpg",
23
+ "lib/public/images/leniwce_controller.png",
24
+ "lib/public/images/leniwce_controller.svg",
25
+ "lib/public/images/leniwiec.png",
26
+ "lib/public/images/leniwiec.svg",
27
+ "lib/public/images/mvc.png",
28
+ "lib/public/images/mvc.svg",
29
+ "lib/public/images/pablo_picasso.jpg",
30
+ "lib/public/images/pastie.png",
31
+ "lib/public/images/rails3.png",
32
+ "lib/public/images/rails3.svg",
33
+ "lib/public/images/the_thinker.jpg",
34
+ "lib/public/javascripts/ruby3.js",
35
+ "lib/public/stylesheets/icons/doc.png",
36
+ "lib/public/stylesheets/icons/email.png",
37
+ "lib/public/stylesheets/icons/external.png",
38
+ "lib/public/stylesheets/icons/feed.png",
39
+ "lib/public/stylesheets/icons/im.png",
40
+ "lib/public/stylesheets/icons/pdf.png",
41
+ "lib/public/stylesheets/icons/visited.png",
42
+ "lib/public/stylesheets/icons/xls.png",
43
+ "lib/public/stylesheets/ie.css",
44
+ "lib/public/stylesheets/print.css",
45
+ "lib/public/stylesheets/rails3.css",
46
+ "lib/public/stylesheets/screen.css",
47
+ "lib/public/stylesheets/src/grid.png",
48
+ "lib/public/stylesheets/uv.css",
49
+ "lib/rails3-tutorial.rb",
50
+ "lib/views/answers.rdiscount",
51
+ "lib/views/authentication.rdiscount",
52
+ "lib/views/blog.rdiscount",
53
+ "lib/views/caching.rdiscount",
54
+ "lib/views/exercises.rdiscount",
55
+ "lib/views/fortune.rdiscount",
56
+ "lib/views/intro.rdiscount",
57
+ "lib/views/layout.rdiscount",
58
+ "lib/views/main.rdiscount",
59
+ "lib/views/pastie.rdiscount",
60
+ "lib/views/store.rdiscount",
61
+ "lib/views/todo.rdiscount",
62
+ "rails3-tutorial.gemspec"
63
+ ]
64
+ s.homepage = %q{http://github.com/wbzyl/rails3-tutorial}
65
+ s.rdoc_options = ["--charset=UTF-8"]
66
+ s.require_paths = ["lib"]
67
+ s.rubyforge_project = %q{rails3-tutorial}
68
+ s.rubygems_version = %q{1.3.4}
69
+ s.summary = %q{Prosta aplikacja Sinatry do notatek.}
70
+
71
+ if s.respond_to? :specification_version then
72
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
73
+ s.specification_version = 3
74
+
75
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
76
+ s.add_runtime_dependency(%q<rack>, [">= 0"])
77
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
78
+ s.add_runtime_dependency(%q<rdiscount>, [">= 0"])
79
+ s.add_runtime_dependency(%q<ultraviolet>, [">= 0"])
80
+ s.add_runtime_dependency(%q<coderay>, [">= 0"])
81
+ s.add_runtime_dependency(%q<wbzyl-sinatra-rdiscount>, [">= 0"])
82
+ s.add_runtime_dependency(%q<wbzyl-rack-codehighlighter>, [">= 0"])
83
+ else
84
+ s.add_dependency(%q<rack>, [">= 0"])
85
+ s.add_dependency(%q<sinatra>, [">= 0"])
86
+ s.add_dependency(%q<rdiscount>, [">= 0"])
87
+ s.add_dependency(%q<ultraviolet>, [">= 0"])
88
+ s.add_dependency(%q<coderay>, [">= 0"])
89
+ s.add_dependency(%q<wbzyl-sinatra-rdiscount>, [">= 0"])
90
+ s.add_dependency(%q<wbzyl-rack-codehighlighter>, [">= 0"])
91
+ end
92
+ else
93
+ s.add_dependency(%q<rack>, [">= 0"])
94
+ s.add_dependency(%q<sinatra>, [">= 0"])
95
+ s.add_dependency(%q<rdiscount>, [">= 0"])
96
+ s.add_dependency(%q<ultraviolet>, [">= 0"])
97
+ s.add_dependency(%q<coderay>, [">= 0"])
98
+ s.add_dependency(%q<wbzyl-sinatra-rdiscount>, [">= 0"])
99
+ s.add_dependency(%q<wbzyl-rack-codehighlighter>, [">= 0"])
100
+ end
101
+ end
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wbzyl-rails3-tutorial
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Wlodek Bzyl
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-06-24 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: sinatra
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rdiscount
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: ultraviolet
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: coderay
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: wbzyl-sinatra-rdiscount
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: wbzyl-rack-codehighlighter
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ description: Notatki do frameworka Rails3
86
+ email: matwb@univ.gda.pl
87
+ executables: []
88
+
89
+ extensions: []
90
+
91
+ extra_rdoc_files:
92
+ - README.markdown
93
+ files:
94
+ - Rakefile
95
+ - TODO
96
+ - VERSION.yml
97
+ - config.ru
98
+ - lib/config.ru
99
+ - lib/public/images/bradypus.jpg
100
+ - lib/public/images/leniwce_controller.png
101
+ - lib/public/images/leniwce_controller.svg
102
+ - lib/public/images/leniwiec.png
103
+ - lib/public/images/leniwiec.svg
104
+ - lib/public/images/mvc.png
105
+ - lib/public/images/mvc.svg
106
+ - lib/public/images/pablo_picasso.jpg
107
+ - lib/public/images/pastie.png
108
+ - lib/public/images/rails3.png
109
+ - lib/public/images/rails3.svg
110
+ - lib/public/images/the_thinker.jpg
111
+ - lib/public/javascripts/ruby3.js
112
+ - lib/public/stylesheets/icons/doc.png
113
+ - lib/public/stylesheets/icons/email.png
114
+ - lib/public/stylesheets/icons/external.png
115
+ - lib/public/stylesheets/icons/feed.png
116
+ - lib/public/stylesheets/icons/im.png
117
+ - lib/public/stylesheets/icons/pdf.png
118
+ - lib/public/stylesheets/icons/visited.png
119
+ - lib/public/stylesheets/icons/xls.png
120
+ - lib/public/stylesheets/ie.css
121
+ - lib/public/stylesheets/print.css
122
+ - lib/public/stylesheets/rails3.css
123
+ - lib/public/stylesheets/screen.css
124
+ - lib/public/stylesheets/src/grid.png
125
+ - lib/public/stylesheets/uv.css
126
+ - lib/rails3-tutorial.rb
127
+ - lib/views/answers.rdiscount
128
+ - lib/views/authentication.rdiscount
129
+ - lib/views/blog.rdiscount
130
+ - lib/views/caching.rdiscount
131
+ - lib/views/exercises.rdiscount
132
+ - lib/views/fortune.rdiscount
133
+ - lib/views/intro.rdiscount
134
+ - lib/views/layout.rdiscount
135
+ - lib/views/main.rdiscount
136
+ - lib/views/pastie.rdiscount
137
+ - lib/views/store.rdiscount
138
+ - lib/views/todo.rdiscount
139
+ - rails3-tutorial.gemspec
140
+ - README.markdown
141
+ has_rdoc: false
142
+ homepage: http://github.com/wbzyl/rails3-tutorial
143
+ post_install_message:
144
+ rdoc_options:
145
+ - --charset=UTF-8
146
+ require_paths:
147
+ - lib
148
+ required_ruby_version: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: "0"
153
+ version:
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: "0"
159
+ version:
160
+ requirements: []
161
+
162
+ rubyforge_project: rails3-tutorial
163
+ rubygems_version: 1.2.0
164
+ signing_key:
165
+ specification_version: 3
166
+ summary: Prosta aplikacja Sinatry do notatek.
167
+ test_files: []
168
+