I have essentially finished the Rails Cookbook. It’s in O’Reilly’s production pipeline and should be in-print by Christmas. Here’s the final table of contents:
ch01_Getting_Started/
- Introduction.xml
- Finding_Documentation.xml
- Fix_Ruby_and_Install_Rails_on_OS_X_Tiger.xml
- Getting_your_Rails_Project_into_Subversion.xml
- Installing_MySQL.xml
- Installing_PostgreSQL.xml
- Installing_Rails.xml
- Joining_the_Rails_Community.xml
- Running_Rails_in_OSX_with_Locomotive.xml
- Running_Rails_in_Windows_with_Instant_Rails.xml
- Updating_Rails_with_RubyGems.xml
ch02_Rails_Development/
- Introduction.xml
- Creating_a_Rails_Project.xml
- Creating_Full_Featured_CRUD_Applications_with_Streamlined.xml
- Cross_Platform_Development_with_RadRails.xml
- Develop_Rails_in_OS_X_with_TextMate.xml
- Enhance_Windows_Development_with_Cygwin.xml
- Generating_Rdoc_for_your_Rails_Application.xml
- Installing_and_Running_Edge_Rails.xml
- Jump_start_Development_with_Scaffolding.xml
- Setting_Up_Password-less_Authentication_with_SSH.xml
- Speed_Up_Rails_Development_with_Mongrel.xml
- Understanding_Pluralization_Patterns_in_Rails.xml
ch03_Active_Record/
- Introduction.xml
- Accessing_your_Data_via_Active_Record.xml
- Add_Sort_Capabilities_to_a_Model_with_acts_as_list.xml
- Automating_Record_Time_stamping.xml
- Avoiding_Race_Conditions_with_Optimistic_Locking.xml
- Create_a_Directory_of_Nested_Topics_with_acts_as_tree.xml
- Developing_your_Database_with_Migrations.xml
- Enforce_Data_Integrity_with_Active_Record_Validations.xml
- Executing_Custom_Queries_with_find_by_sql.xml
- Factoring_out_Common_Relationships_with_Polymorphic_Associations.xml
- Handling_Tables_with_Legacy_Naming_Conventions.xml
- Inspecting_Model_Relationships_from_the_Rails_Console.xml
- Iterating_Over_an_Active_Record_Result_Set.xml
- Mixing_Join_Models_and_Polymorphism_for_Flexible_Data_Modeling.xml
- Model_a_Threaded_Forum_with_acts_as_nested_set.xml
- Modeling_a_Database_with_Active_Record.xml
- Perform_a_Task_Whenever_a_Model_Object_is_Created.xml
- Programmatically_Define_Database_Schema.xml
- Protecting_Against_Race_Conditions_with_Transactions.xml
- Retrieving_Data_Efficiently_with_Eager_Loading.xml
- Retrieving_Records_with_Find.xml
- Setting_up_a_Relational_Database_for_Use_with_Rails.xml
- Updating_an_Active_Record_Object.xml
ch04_Action_Controller/
- Introduction.xml
- Accessing_Form_Data_from_a_Controller.xml
- Changing_an_Applications_Default_Page.xml
- Clarify_Your_Code_with_Named_Routes.xml
- Configuring_Customized_Routing_Behavior.xml
- Displaying_Alert_Messages_with_Flash.xml
- Extending_the_Life_of_a_Flash_Message.xml
- Following_Actions_with_Redirects.xml
- Generating_URLs_Dynamically.xml
- Inspecting_Requests_with_Filters.xml
- Logging_with_Filters.xml
- Rendering_Actions.xml
- Restricting_Access_to_Controller_Methods.xml
- Sending_Files_or_Data_Streams_to_the_Browser.xml
- Storing_Session_Information_in_a_Database.xml
- Tracking_Information_with_Sessions.xml
- Using_Filters_for_Authentication.xml
ch05_Action_View/
- Introduction.xml
- Avoid_Potentially_Harmful_Code_in_Views_with_Liquid_Templates.xml
- Creating_a_Sticky_Select_List.xml
- Creating_a_Web_Form_with_Form_Helpers.xml
- Customize_the_Behavior_of_Standard_Helpers.xml
- Defining_a_Default_Application_Layout.xml
- Displaying_Large_Data-sets_with_Pagination.xml
- Editing_many-to-many_Relationships_with_Multi-Select_Lists.xml
- Factoring_out_Common_Display_Code_with_Layouts.xml
- Formatting_Dates_Times_and_Currencies.xml
- Generating_RSS_Feeds_from_Active_Record_Data.xml
- Globalize_your_Rails_Application.xml
- Output_XML_with_Builder_Templates.xml
- Personalize_User_Profiles_with_Gravatars.xml
- Processing_Dynamically_Created_Input_Fields.xml
- Reusing_Page_Elements_with_Partials.xml
- Simplifying_Templates_with_View_Helpers.xml
ch06_RESTful_Development/
- Introduction.xml
- Consuming_Complex_Rest_Resources.xml
- Creating_Nested_Resources.xml
- Develop_your_Rails_Applications_RESTfully.xml
- Modeling_Relationships_RESTfully_with_Join_Models.xml
- Moving_Beyond_CRUD_with_Restful_Resources.xml
- Supporting_Alternative_Data_Formats_by_Mime_Type.xml
ch07_Rails_Application_Testing/
- Introduction.xml
- Analyzing_Code_Coverage_with_rcov.xml
- Centralize_the_Creation_of_Objects_Common_to_Test_Cases.xml
- Creating_Many-to-Many_Association_Fixtures.xml
- Examining_the_Contents_of_Cookie.xml
- Importing_Test_Data_with_CSV_Fixtures.xml
- Improve_Feedback_by_Running_Tests_Continuously.xml
- Including_Dynamic_Data_in_Fixtures_with_ERb.xml
- Initializing_a_Test_Database.xml
- Interactively_Testing_Controllers_from_the_Rails_Console.xml
- Interpreting_the_Output_of_Test-Unit.xml
- Loading_Test_Data_with_YAML_Fixtures.xml
- Modifying_the_Default_Behaviour_of_a_Class_for_Testing_Using_Mocks.xml
- Monitoring_Test_Coverage_with_rake_stats.xml
- Running_Tests_with_Rake.xml
- Speeding_up_Tests_with_Transactional_Fixtures.xml
- Testing_Across_Controllers_with_Integration_Tests.xml
- Testing_a_Model_with_Unit_Tests.xml
- Testing_Controllers_with_Functional_Tests.xml
- Testing_Custom_and_Named_Routes.xml
- Testing_File_Uploads.xml
- Testing_HTTP_Requests_with_Response-Related_Assertions.xml
- Unit_Testing_Model_Validations.xml
- Verifying_DOM_Structure_with_Tag-Related_Assertions.xml
- Writing_Custom_Assertions.xml
ch08_JavaScript_and_AJAX/
- Introduction.xml
- Adding_DOM_Elements_to_a_Page.xml
- Autocompleting_a_Text_Field.xml
- Creating_a_Custom_Report_with_Drag_and_Drop.xml
- Creating_an_Ajax_Progress_Indicator.xml
- Dynamically_Add_Items_to_a_Select_List.xml
- Editing_Fields_in_Place.xml
- Enhancing_the_User_Interface_with_Visual_Effects.xml
- Implementing_a_Live_Search.xml
- Inserting_JavaScript_Into_Templates.xml
- Letting_a_User_Re-order_a_List.xml
- Monitor_the_Content_Length_of_a_Textarea.xml
- Search_for_and_Hightlight_Text_Dynamically.xml
- Updating_Page_Elements_with_RJS_Templates.xml
ch09_Action_Mailer/
- Introduction.xml
- Attaching_Files_to_Email_Messages.xml
- Configuring_Rails_to_Send_Email.xml
- Creating_a_Custom_Mailer_Class_with_the_mailer_Generator.xml
- Formatting_Email_Messages_Using_Templates.xml
- Receiving_Email_with_ActionMailer.xml
- Sending_Email_From_a_Rails_Application.xml
ch10_Debugging_Rails_Applications/
- Introduction.xml
- Debugging_HTTP_Communication_with_Firefox_Extensions.xml
- Debugging_Your_Application_in_Real_Time_with_the_Breakpointer.xml
- Debug_your_Code_Interactively_with_ruby-debug.xml
- Debug_your_JavaScript_in_Real_Time_with_the_JavaScript_Shell.xml
- Displaying_Object_Contents_with_Exceptions.xml
- Emailing_Application_Exceptions.xml
- Exploring_and_Debugging_from_the_Console.xml
- Filtering_Development_Logs_in_Real-Time.xml
- Fixing_Bugs_at_the_Source_with_Ruby_-cw.xml
- Logging_with_the_Built-in_Rails_Logger_Class.xml
- Outputting_Environment_Information_in_Views.xml
- Writing_Debugging_Information_to_a_File.xml
ch11_Security/
- Introduction.xml
- Guarding_Against_Cross_Site_Scripting_Attacks.xml
- Hardening_your_Systems_with_Strong_Passwords.xml
- Protecting_Queries_from_SQL_Injection.xml
- Restricting_Access_to_Public_Methods_or_Actions.xml
- Securing_Your_Server_by_Closing_Unnecessary_Ports.xml
ch12_Performance/
- Introduction.xml
- Before_Filtering_Cached_Pages_with_Action_Caching.xml
- Benchmark_Portions_of_Your_Application_Code.xml
- Expiring_Cached_Pages.xml
- Improve_Performance_by_Caching_Static_Pages.xml
- Increasing_Performance_by_Caching_Post-Processed_Content.xml
- Measuring_Web_Server_Performance_with_httperf.xml
- Mix_Static_and_Dynamic_Content_with_Fragment_Caching.xml
- Speed_up_Data_Access_Times_with_Memcached.xml
ch13_Hosting_and_Deployment/
- Introduction.xml
- Cleaning_up_Residual_Session_Records.xml
- Configuring_Pound_with_SSL_Support.xml
- Customize_Pounds_Logging_with_Cronolog.xml
- Deploying_Rails_with_Capistrano.xml
- Deploying_Rails_with_Pound_in_Front_of_Mongrel_Lighttpd_and_Apache.xml
- Deploying_to_Multiple_Environments_with_Capistrano.xml
- Deploying_with_Capistrano_and_mongrel_cluster.xml
- Deploying_with_Capistrano_without_a_SCM.xml
- Disabling_your_Website_During_Maintenance.xml
- Hosting_Rails_Using_Apache_1_3_and_mod_fastcgi.xml
- Hosting_Rails_with_Apache_2-2_mod_proxy_balancer_and_Mongrel.xml
- Managing_Multiple_Mongrel_Processes_with_mongrel_cluster.xml
- Simple_Load_Balancing_with_Pen.xml
- Writing_Custom_Capistrano_Tasks.xml
ch14_Extending_Rails_with_Plugins/
- Introduction.xml
- Adding_More_Elaborate_Authentication_using_the_Login_Engine.xml
- Adding_View_Helpers_to_Rails_as_Plugins.xml
- Building_Authentication_with_acts_as_authenticated.xml
- Disable_Records_Instead_of_Deleting_them_with_acts_as_paranoid.xml
- Extending_Active_Record_with_an_acts_as_Plugin.xml
- Finding_Third_Party_Plugins.xml
- Installing_and_Removing_Plugins.xml
- Manipulate_Record_Versions_with_acts_as_versioned.xml
- Simplify_Folksonomy_with_acts_as_taggable.xml
- Uploading_Files_with_acts_as_attachment.xml
- Uploading_Files_with_the_file_column_Plugin.xml
ch15_Graphics/
- Introduction.xml
- Creating_Resized_Thumbnails_with_RMagick.xml
- Creating_Small_Informative_Graphs_with_Sparklines.xml
- Generating_PDF_Documents.xml
- Installing_RMagick_for_Image_Processing.xml
- Serving_Images_Directly_from_a_Database.xml
- Uploading_Images_into_a_Database.xml
- Visually_Display_Data_with_Gruff.xml





Just wondering about the .xml What software are you writing this in?
This looks like a great book, I can’t wait to read it. I ordered my copy today on Amazon, an early Christmas present.
Congrats! Looking forward to it.
Jon:
Rob wrote it in DocBook 4.4 (www.docbook.org) using XMLMind’s XMLEditor (www.xmlmind.com).
@Jon – I actually meant to remove underscores and file extensions from the above list but I decided that leaving the .xml extension might help to dispell the myth that I wrote any part of this book in MS Word.
What I used was a wonderful tool called XML Editor. It’s not open-source but the version I used is free. It’s cross platform (written in Java), which came in handy during the process.
I’m looking forward to this book, Rob. The O’Reilly Cookbooks are always great, and I’m sure this one is absolutely delicious. Keep up the great work!
I’d buy the PDF ebook if you can get O’Reilly to publish it!