This book's emphasis is on using Rails to build a large database-backed web application---precisely the kind of applications for which Rails is perfectly suited. The application built in this book is a social-networking website à la Facebook or MySpace. This represents four principal advantages. First, social networking is a hot topic and is currently generating a high degree of excitement. Second, a social networking application is big, giving the authors a chance to show off the features Rails has to handle the complexity of large projects, including the Model-Controller-View (MVC) architecture, automated testing, and code refactoring. Third, the application matches the authors' expertise: Aurelius Prochazka has considerable experience with community websites as a founder of ArsDigita, a pioneer in the development of social networking sites as early as 1999, and Michael Hartl cofounded a company to develop sports applications with a strong social component. Finally, the step-by-step tutorial approach allows users see Rails as it is actually used, resulting in learning by example. The book will have an extensive website of supporting materials at RailsSpace.com, including the application source code, a tech blog, screencasts, follow-up articles, and a working version of the social network "RailsSpace" itself. Product Description
Ruby on Rails is fast displacing PHP, ASP, and J2EE as the development framework of choice for discriminating programmers, thanks to its elegant design and emphasis on practical results. RailsSpace teaches you to build large-scale projects with Rails by developing a real-world application: a social networking website like MySpace, Facebook, or Friendster.
Inside, the authors walk you step by step from the creation of the site's virtually static front page, through user registration and authentication, and into a highly dynamic site, complete with user profiles, image upload, email, blogs, full-text and geographical search, and a friendship request system. In the process, you learn how Rails helps you control code complexity with the model-view-controller (MVC) architecture, abstraction layers, automated testing, and code refactoring, allowing you to scale up to a large project even with a small number of developers.
This essential introduction to Rails provides
A tutorial approach that allows you to experience Rails as it is actually used
A solid foundation for creating any login-based website in Rails
Coverage of newer and more advanced Rails features, such as form generators, REST, and Ajax (including RJS)
A thorough and integrated introduction to automated testing
The book's companion website provides the application source code, a blog with follow-up articles, narrated screencasts, and a working version of the RailSpace social network.
Backcover
Ruby on Rails is fast displacing PHP, ASP, and J2EE as the development framework of choice for discriminating programmers, thanks to its elegant design and emphasis on practical results. RailsSpace teaches you to build large-scale projects with Rails by developing a real-world application: a social networking website like MySpace, Facebook, or Friendster.
Inside, the authors walk you step by step from the creation of the site's virtually static front page, through user registration and authentication, and into a highly dynamic site, complete with user profiles, image upload, email, blogs, full-text and geographical search, and a friendship request system. In the process, you learn how Rails helps you control code complexity with the model-view-controller (MVC) architecture, abstraction layers, automated testing, and code refactoring, allowing you to scale up to a large project even with a small number of developers.
This essential introduction to Rails provides
A tutorial approach that allows you to experience Rails as it is actually used
A solid foundation for creating any login-based website in Rails
Coverage of newer and more advanced Rails features, such as form generators, REST, and Ajax (including RJS)
A thorough and integrated introduction to automated testing
The book's companion website provides the application source code, a blog with follow-up articles, narrated screencasts, and a working version of the RailSpace social network.
List of figures xvii Acknowledgments xxi Chapter 1 Introduction 1 1.1 Why Rails? 1
1.2 Why this book? 3
1.3 Who should read this book? 4
1.4 A couple of Rails stories 5
Part I Foundations 11 Chapter 2 Getting Started 13 2.1 Preliminaries 13
2.2 Our first pages 20
2.3 Rails views 26
2.4 Layouts 28
2.5 Developing with style 38
Chapter 3 Modeling users 43 3.1 Creating the User model 43
3.2 User model validations 51
3.3 Further steps to ensure data integrity (?) 63
Chapter 4 Registering users 65 4.1 A User controller 65
4.2 User registration: The view 66
4.3 User registration: The action 77
4.4 Linking in Registration 90
4.5 An example user 95
Chapter 5 Getting started with testing 97 5.1 Our testing philosophy 98
5.2 Test database configuration 98
5.3 Site controller testing 99
5.4 Registration testing 103
5.5 Basic User model testing 111
5.6 Detailed User model testing 115
Chapter 6 Logging in and out 131 6.1 Maintaining state with sessions 131
6.2 Logging in 134
6.3 Logging out 146
6.4 Protecting pages 150
6.5 Friendly URL forwarding 156
6.6 Refactoring basic login 164
Chapter 7 Advanced login 181 7.1 So you say you want to be remembered? 181
7.2 Actually remembering the user 192
7.3 "Remember me" tests 203
7.4 Advanced tests: Integration testing 209
7.5 Refactoring redux 215
Chapter 8 Updating user information 225 8.1 A non-stub hub 226
8.2 Updating the email address 226
8.3 Updating password 229
8.4 Testing user edits 237
8.5 Partials 245
Part II Building a social network 253 Chapter 9 Personal profiles 255 9.1 A user profile stub 256
9.2 User specs 260
9.3 Editing the user specs 266
9.4 Updating the user hub 277
9.5 Personal FAQ: Interests and personality 288
9.6 Public-facing profile 299
Chapter 10 Community 303 10.1 Building a community (controller) 303
10.2 Setting up sample users 304
10.3 The community index 308
10.4 Polishing results 320
Chapter 11 Searching and browsing 327 11.1 Searching 327
11.1.1 Search views 328
11.1.2 Ferret 330
11.2 Testing search 341
11.3 Beginning browsing 343
11.4 Location, location, location 350
Chapter 12 Avatars 365 12.1 Preparing for avatar upload 365
12.2 Manipulating avatars 373
Chapter 13 Email 389 13.1 Action Mailer 389
13.2 Double-blind email system 399
Chapter 14 Friendships 411 14.1 Modeling friendships 411
14.2 Friendship requests 420
14.3 Managing friendships 426
Chapter 15 RESTful blogs 437 15.1 We deserve a REST today 438
15.2 Scaffolds for a RESTful blog 445
15.3 Building the real blog 454
15.4 RESTful testing 473
Chapter 16 Blog comments with Ajax 479 16.1 RESTful comments 479
16.2 Beginning Ajax 485
16.3 Visual effects 495
16.4 Debugging and testing 501
Chapter 17 What next? 505 17.1 Deployment considerations 505
17.2 More Ruby and Rails 515
Index 517
This hands-on tutorial shows how to build a real-world, practical application using Ruby on Rails. This book targets both beginning and experienced web developers interested in learning Rails, including serious developers looking to use Rails to build large-scale web applications.
Ruby on Rails is fast displacing PHP, ASP, and J2EE as the development framework of choice for discriminating programmers, thanks to its elegant design and emphasis on practical results. RailsSpace teaches you to build large-scale projects with Rails by developing a real-world application: a social networking website like MySpace, Facebook, or Friendster.
Inside, the authors walk you step by step from the creation of the site's virtually static front page, through user registration and authentication, and into a highly dynamic site, complete with user profiles, image upload, email, blogs, full-text and geographical search, and a friendship request system. In the process, you learn how Rails helps you control code complexity with the model-view-controller (MVC) architecture, abstraction layers, automated testing, and code refactoring, allowing you to scale up to a large project even with a small number of developers.
This essential introduction to Rails provides
A tutorial approach that allows you to experience Rails as it is actually used
A solid foundation for creating any login-based website in Rails
Coverage of newer and more advanced Rails features, such as form generators, REST, and Ajax (including RJS)
A thorough and integrated introduction to automated testing
The book's companion website provides the application source code, a blog with follow-up articles, narrated screencasts, and a working version of the RailSpace social network.
Backcover
Ruby on Rails is fast displacing PHP, ASP, and J2EE as the development framework of choice for discriminating programmers, thanks to its elegant design and emphasis on practical results. RailsSpace teaches you to build large-scale projects with Rails by developing a real-world application: a social networking website like MySpace, Facebook, or Friendster.
Inside, the authors walk you step by step from the creation of the site's virtually static front page, through user registration and authentication, and into a highly dynamic site, complete with user profiles, image upload, email, blogs, full-text and geographical search, and a friendship request system. In the process, you learn how Rails helps you control code complexity with the model-view-controller (MVC) architecture, abstraction layers, automated testing, and code refactoring, allowing you to scale up to a large project even with a small number of developers.
This essential introduction to Rails provides
A tutorial approach that allows you to experience Rails as it is actually used
A solid foundation for creating any login-based website in Rails
Coverage of newer and more advanced Rails features, such as form generators, REST, and Ajax (including RJS)
A thorough and integrated introduction to automated testing
The book's companion website provides the application source code, a blog with follow-up articles, narrated screencasts, and a working version of the RailSpace social network.
List of figures xvii Acknowledgments xxi Chapter 1 Introduction 1 1.1 Why Rails? 1
1.2 Why this book? 3
1.3 Who should read this book? 4
1.4 A couple of Rails stories 5
Part I Foundations 11 Chapter 2 Getting Started 13 2.1 Preliminaries 13
2.2 Our first pages 20
2.3 Rails views 26
2.4 Layouts 28
2.5 Developing with style 38
Chapter 3 Modeling users 43 3.1 Creating the User model 43
3.2 User model validations 51
3.3 Further steps to ensure data integrity (?) 63
Chapter 4 Registering users 65 4.1 A User controller 65
4.2 User registration: The view 66
4.3 User registration: The action 77
4.4 Linking in Registration 90
4.5 An example user 95
Chapter 5 Getting started with testing 97 5.1 Our testing philosophy 98
5.2 Test database configuration 98
5.3 Site controller testing 99
5.4 Registration testing 103
5.5 Basic User model testing 111
5.6 Detailed User model testing 115
Chapter 6 Logging in and out 131 6.1 Maintaining state with sessions 131
6.2 Logging in 134
6.3 Logging out 146
6.4 Protecting pages 150
6.5 Friendly URL forwarding 156
6.6 Refactoring basic login 164
Chapter 7 Advanced login 181 7.1 So you say you want to be remembered? 181
7.2 Actually remembering the user 192
7.3 "Remember me" tests 203
7.4 Advanced tests: Integration testing 209
7.5 Refactoring redux 215
Chapter 8 Updating user information 225 8.1 A non-stub hub 226
8.2 Updating the email address 226
8.3 Updating password 229
8.4 Testing user edits 237
8.5 Partials 245
Part II Building a social network 253 Chapter 9 Personal profiles 255 9.1 A user profile stub 256
9.2 User specs 260
9.3 Editing the user specs 266
9.4 Updating the user hub 277
9.5 Personal FAQ: Interests and personality 288
9.6 Public-facing profile 299
Chapter 10 Community 303 10.1 Building a community (controller) 303
10.2 Setting up sample users 304
10.3 The community index 308
10.4 Polishing results 320
Chapter 11 Searching and browsing 327 11.1 Searching 327
11.1.1 Search views 328
11.1.2 Ferret 330
11.2 Testing search 341
11.3 Beginning browsing 343
11.4 Location, location, location 350
Chapter 12 Avatars 365 12.1 Preparing for avatar upload 365
12.2 Manipulating avatars 373
Chapter 13 Email 389 13.1 Action Mailer 389
13.2 Double-blind email system 399
Chapter 14 Friendships 411 14.1 Modeling friendships 411
14.2 Friendship requests 420
14.3 Managing friendships 426
Chapter 15 RESTful blogs 437 15.1 We deserve a REST today 438
15.2 Scaffolds for a RESTful blog 445
15.3 Building the real blog 454
15.4 RESTful testing 473
Chapter 16 Blog comments with Ajax 479 16.1 RESTful comments 479
16.2 Beginning Ajax 485
16.3 Visual effects 495
16.4 Debugging and testing 501
Chapter 17 What next? 505 17.1 Deployment considerations 505
17.2 More Ruby and Rails 515
Index 517
This hands-on tutorial shows how to build a real-world, practical application using Ruby on Rails. This book targets both beginning and experienced web developers interested in learning Rails, including serious developers looking to use Rails to build large-scale web applications.