www.railstutorial.org Open in urlscan Pro
2606:4700:20::681a:80b  Public Scan

Submitted URL: http://railstutorial.org/
Effective URL: https://www.railstutorial.org/
Submission: On April 01 via manual from US — Scanned from DE

Form analysis 3 forms found in the DOM

POST /cart/complete

<form id="j_checkoutForm" action="/cart/complete" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token"
    value="e1ytno1wLQWpj5tkv1GPDG2f0XPf6KG+F7IpUmnI3btxA3bqwN2LCPPLqJQPBGIDXJCyklEXiQ7UU8c18jLjSw==">
  <input type="hidden" name="pap_custom" value="" id="pap_tdx8v2s5a">
  <h5 class="header-with-link"> Create Account <span> (or <a class="fancylink_stand-bg" href="/login?after=%2F%23cart-checkout">log in</a> ) </span>
  </h5>
  <div>
    <label for="cart_new_user_email">Email</label>
    <input type="email" name="cart[new_user_email]" id="cart_new_user_email" required="required" autocomplete="email">
  </div>
  <div>
    <label for="cart_new_user_username">Public Username</label>
    <input type="text" name="cart[new_user_username]" id="cart_new_user_username" required="required" autocomplete="username">
  </div>
  <div>
    <label for="cart_new_user_password">Password</label>
    <input type="password" name="cart[new_user_password]" id="cart_new_user_password" required="required" autocomplete="new-password">
  </div>
  <div>
    <label for="cart_new_user_password_confirmation">Password Confirmation</label>
    <input type="password" name="cart[new_user_password_confirmation]" id="cart_new_user_password_confirmation" required="required" autocomplete="new-password">
  </div>
  <div class="optin-wr">
    <div class="optin-error_msg">You have to make a choice. Choose...wisely.</div>
    <label class="fancyCheckLabel optin-check">
      <input id="cart-opt-in" name="cart[new_user_opt_in]" type="radio" value="1"> receive announcement and update emails? <label></label>
    </label>
    <p class="optin-msg"> Get occasional notifications about things like product discounts, blog posts, and new or updated tutorials. Unsubscribe at any time. </p>
    <label class="fancyCheckLabel optout-check">
      <input id="cart-opt-out" name="cart[new_user_opt_in]" type="radio" value="0"> No thanks. <label></label>
    </label>
  </div>
  <div class="checkout_gifting" id="gift-options">
    <label class="fancyCheckLabel">
      <input name="cart[is_gift]" onclick="toggleGiftForm($(event.target))" type="checkbox"> Is this a gift? <label></label>
    </label>
    <div class="checkout_gifting-form" id="gift-form" style="display: none;">
      <h5>Gift Delivery Options</h5>
      <div>
        <label class="fancyCheckLabel">
          <input checked="" name="cart[gift][to_print]" onchange="togglePrint()" type="radio" value="0">
          <label></label> Send Gift by Email <small>(We’ll email the recipient for you)</small>
        </label>
      </div>
      <div>
        <label class="fancyCheckLabel">
          <input name="cart[gift][to_print]" onchange="togglePrint()" type="radio" value="1">
          <label></label> Print Gift Yourself <small>(Give the gift in a card/envelope)</small>
        </label>
      </div>
      <div>
        <label for="cart_gift_from_name">From Name</label>
        <input type="text" name="cart[gift][from_name]" id="cart_gift_from_name">
      </div>
      <div>
        <label for="cart_gift_name">Recipient Name</label>
        <input type="text" name="cart[gift][name]" id="cart_gift_name">
      </div>
      <div id="gift_recipient_email">
        <label for="cart_gift_email">Recipient Email</label>
        <input type="email" name="cart[gift][email]" id="cart_gift_email">
      </div>
      <div>
        <label for="cart_gift_message">Personalized Gift Message (optional)</label>
        <textarea name="cart[gift][message]" id="cart_gift_message" rows="3" style="min-height:auto"></textarea>
      </div>
      <div id="gift_delivery_date">
        <label for="cart_gift_to_deliver_at">Delivery Date (MM/DD/YYYY - Optional)</label>
        <input type="date" name="cart[gift][to_deliver_at]" id="cart_gift_to_deliver_at" placeholder="MM/DD/YYYY">
      </div>
    </div>
  </div>
  <script>
    (function() {
      window.toggleGiftForm = function(ch) {
        return $('#gift-form').toggle(ch.is(':checked'));
      };
      window.togglePrint = function() {
        return $('#gift_recipient_email, #gift_delivery_date').toggle($('input[name="cart[gift][to_print]"]:checked').val() === '0');
      };
      $(function() {
        return toggleGiftForm($('#gift-options input[name="cart[is_gift]"]'));
      });
    }).call(this);
  </script>
  <div class="cartNotFree" id="j_quickCheckout">
    <h5>Quick Checkout</h5>
    <div id="payment-request-button"></div>
    <div class="paypal-wr">
      <div id="paypal-button"></div>
      <div id="paypal-details" style="display:none">
        <strong>Using PayPal Account:</strong>
        <br>
        <span id="paypal-name"></span> ( <span id="paypal-email"></span> ) <br>
        <a href="javascript://" id="cancel-paypal-btn" onclick="Purchase.cancelPaypal()">Change</a>
      </div>
    </div>
    <h5>or Pay by Credit Card</h5>
    <div class="creditCardInput">
      <div id="j_cc_form">
        <div class="checkoutFull">
          <label>Card Info</label>
          <div class="card-element" id="card-element"></div>
          <div id="card-errors"></div>
        </div>
      </div>
    </div>
  </div>
  <div class="le_cart-errors userErrors"></div>
  <div class="le_cart-errors purchaseErrors"></div>
  <div class="le_cart-errors checkoutOptinErrors">
    <h5>Error processing your payment</h5>
    <ul>
      <li>You didn't choose whether or not to be added to the mailing list</li>
    </ul>
  </div>
  <h5>Confirm</h5>
  <div class="cart_lastconfirm">
    <label>Total Today</label>
    <div id="j_cartTotal">$0.00</div>
    <label>(7 day free trial - Payment will be charged after trial ends)</label>
  </div>
  <div class="cart"></div>
  <div class="submitWr">
    <script async="" defer="defer" src="https://www.google.com/recaptcha/api.js"></script>
    <div>
      <div class="grecaptcha-badge" data-style="bottomright"
        style="width: 256px; height: 60px; position: fixed; visibility: hidden; display: block; transition: right 0.3s ease 0s; bottom: 14px; right: -186px; box-shadow: gray 0px 0px 5px; border-radius: 2px; overflow: hidden;">
        <div class="grecaptcha-logo"><iframe title="reCAPTCHA" width="256" height="60" role="presentation" name="a-5df3wkan0ztr" frameborder="0" scrolling="no"
            sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox allow-storage-access-by-user-activation"
            src="https://www.google.com/recaptcha/api2/anchor?ar=1&amp;k=6LeUMkckAAAAACfQJqE0y43Fa8pSrKJKBWT3_yKQ&amp;co=aHR0cHM6Ly93d3cucmFpbHN0dXRvcmlhbC5vcmc6NDQz&amp;hl=de&amp;v=moV1mTgQ6S91nuTnmll4Y9yf&amp;size=invisible&amp;cb=mho80yuyz7hl"></iframe>
        </div>
        <div class="grecaptcha-error"></div><textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response"
          style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>
      </div><iframe style="display: none;"></iframe>
    </div><button class="g-recaptcha j_submitButton danger" data-callback="onSubmit" data-sitekey="6LeUMkckAAAAACfQJqE0y43Fa8pSrKJKBWT3_yKQ"> Complete Checkout </button>
  </div>
  <div class="payment-details">
    <img class="payment-cards" src="https://www.learnenough.com/assets/payment-d6532f21f3d0117c7b88578c5666d2abf8598dc306db1198909969d73efb9de6.webp">
    <p> Payments and credit card details are securely managed and protected by Learn Enough's payment processor, Stripe. More information on their site: <br>
      <a target="_blank" class="stripeLogo" href="https://www.stripe.com"><img src="https://www.learnenough.com/assets/stripe-697e04c779dd1f74593ce93803987137493cffc44c593b5a73399025cf64820a.webp"></a>
    </p>
  </div>
  <script>
    $(function() {
      Cart.init({
        availableBundles: [{
          "id": 6,
          "name": "Learn Enough JavaScript to Be Dangerous",
          "code": "learn_enough_javascript",
          "price_in_dollars": 29.0,
          "book_ids": [301]
        }, {
          "id": 1,
          "name": "Learn Enough Command Line to Be Dangerous",
          "code": "learn_enough_command_line",
          "price_in_dollars": 19.0,
          "book_ids": [164]
        }, {
          "id": 7,
          "name": "Learn Enough Ruby to Be Dangerous",
          "code": "learn_enough_ruby",
          "price_in_dollars": 29.0,
          "book_ids": [305]
        }, {
          "id": 2,
          "name": "Learn Enough Text Editor to Be Dangerous",
          "code": "learn_enough_text_editor",
          "price_in_dollars": 19.0,
          "book_ids": [183]
        }, {
          "id": 3,
          "name": "Learn Enough Git to Be Dangerous",
          "code": "learn_enough_git",
          "price_in_dollars": 19.0,
          "book_ids": [191]
        }, {
          "id": 15,
          "name": "Ruby on Rails Tutorial 6th Edition",
          "code": "ruby_on_rails_tutorial_6th_edition",
          "price_in_dollars": 39.0,
          "book_ids": [319]
        }, {
          "id": 4,
          "name": "Learn Enough HTML to Be Dangerous",
          "code": "learn_enough_html",
          "price_in_dollars": 19.0,
          "book_ids": [234]
        }, {
          "id": 5,
          "name": "Learn Enough CSS \u0026 Layout to Be Dangerous",
          "code": "learn_enough_css",
          "price_in_dollars": 29.0,
          "book_ids": [268]
        }, {
          "id": 8,
          "name": "Ruby on Rails Tutorial (Rails 5)",
          "code": "ruby_on_rails_tutorial_4th_edition",
          "price_in_dollars": 39.0,
          "book_ids": [216]
        }, {
          "id": 9,
          "name": "Learn Enough Action Cable to Be Dangerous",
          "code": "learn_enough_action_cable",
          "price_in_dollars": 19.0,
          "book_ids": [322]
        }, {
          "id": 14,
          "name": "Application Development",
          "code": "application_development",
          "price_in_dollars": 39.0,
          "book_ids": [439, 305, 438, 319, 216, 322]
        }, {
          "id": 11,
          "name": "Developer Fundamentals",
          "code": "developer_fundamentals",
          "price_in_dollars": 19.0,
          "book_ids": [164, 183, 191]
        }, {
          "id": 17,
          "name": "Learn Enough Python to Be Dangerous",
          "code": "learn_enough_python",
          "price_in_dollars": 39.0,
          "book_ids": [439]
        }, {
          "id": 16,
          "name": "Ruby on Rails Tutorial 7th Edition",
          "code": "ruby_on_rails_tutorial_7th_edition",
          "price_in_dollars": 39.0,
          "book_ids": [438]
        }, {
          "id": 13,
          "name": "Beginning Development",
          "code": "beginning_development",
          "price_in_dollars": 19.0,
          "book_ids": [301, 305]
        }, {
          "id": 12,
          "name": "Web Basics",
          "code": "web_basics",
          "price_in_dollars": 29.0,
          "book_ids": [234, 268, 301]
        }, {
          "id": 10,
          "name": "All Access",
          "code": "all_access",
          "price_in_dollars": 49.0,
          "book_ids": [164, 183, 191, 234, 268, 439, 301, 305, 216, 319, 438, 322]
        }, {
          "id": 18,
          "name": "Annual All Access",
          "code": "annual_all_access",
          "price_in_dollars": 468.0,
          "book_ids": [164, 183, 191, 234, 268, 439, 301, 305, 216, 319, 438, 322]
        }],
        stripeKey: "pk_live_Xn1p0BfxqKxkAxtEr03P7wmd",
        useCardOnFile: false,
        existingPaymentLabel: "",
        existingPaymentText: "",
        discount: false,
        data: {
          "courseBundles": [],
          "bookOptions": [],
          "subscriptionDiscount": null,
          "is_gift": null,
          "totalToday": 0.0
        },
        braintreeToken: "eyJ2ZXJzaW9uIjoyLCJhdXRob3JpemF0aW9uRmluZ2VycHJpbnQiOiJleUowZVhBaU9pSktWMVFpTENKaGJHY2lPaUpGVXpJMU5pSXNJbXRwWkNJNklqSXdNVGd3TkRJMk1UWXRjSEp2WkhWamRHbHZiaUlzSW1semN5STZJbWgwZEhCek9pOHZZWEJwTG1KeVlXbHVkSEpsWldkaGRHVjNZWGt1WTI5dEluMC5leUpsZUhBaU9qRTNNVEl3T0RNeU5Ea3NJbXAwYVNJNkltTTFZVGN3T0RnMUxXTmlZell0TkRRMU5pMDVOelkxTFRFM1pqZG1NV00xWkRNeU5DSXNJbk4xWWlJNklqTm1abVF6ZW1KM1luWm9ibU5rTW0waUxDSnBjM01pT2lKb2RIUndjem92TDJGd2FTNWljbUZwYm5SeVpXVm5ZWFJsZDJGNUxtTnZiU0lzSW0xbGNtTm9ZVzUwSWpwN0luQjFZbXhwWTE5cFpDSTZJak5tWm1RemVtSjNZblpvYm1Oa01tMGlMQ0oyWlhKcFpubGZZMkZ5WkY5aWVWOWtaV1poZFd4MElqcDBjblZsZlN3aWNtbG5hSFJ6SWpwYkltMWhibUZuWlY5MllYVnNkQ0pkTENKelkyOXdaU0k2V3lKQ2NtRnBiblJ5WldVNlZtRjFiSFFpWFN3aWIzQjBhVzl1Y3lJNmUzMTkuaG96YkwxNWRZMDV2MFRpbmtHZTFjUjQ5OVEzVHdSQ0ZyRmVVQnhtNHdSQlgzOW1sYlBTNUhVWmRycGpnRkdqSG5GSjJpOEVsNWcwaHFqZWtPemM3WUEiLCJjb25maWdVcmwiOiJodHRwczovL2FwaS5icmFpbnRyZWVnYXRld2F5LmNvbTo0NDMvbWVyY2hhbnRzLzNmZmQzemJ3YnZobmNkMm0vY2xpZW50X2FwaS92MS9jb25maWd1cmF0aW9uIiwiZ3JhcGhRTCI6eyJ1cmwiOiJodHRwczovL3BheW1lbnRzLmJyYWludHJlZS1hcGkuY29tL2dyYXBocWwiLCJkYXRlIjoiMjAxOC0wNS0wOCIsImZlYXR1cmVzIjpbInRva2VuaXplX2NyZWRpdF9jYXJkcyJdfSwiY2xpZW50QXBpVXJsIjoiaHR0cHM6Ly9hcGkuYnJhaW50cmVlZ2F0ZXdheS5jb206NDQzL21lcmNoYW50cy8zZmZkM3pid2J2aG5jZDJtL2NsaWVudF9hcGkiLCJlbnZpcm9ubWVudCI6InByb2R1Y3Rpb24iLCJtZXJjaGFudElkIjoiM2ZmZDN6YndidmhuY2QybSIsImFzc2V0c1VybCI6Imh0dHBzOi8vYXNzZXRzLmJyYWludHJlZWdhdGV3YXkuY29tIiwiYXV0aFVybCI6Imh0dHBzOi8vYXV0aC52ZW5tby5jb20iLCJ2ZW5tbyI6Im9mZiIsImNoYWxsZW5nZXMiOltdLCJ0aHJlZURTZWN1cmVFbmFibGVkIjpmYWxzZSwiYW5hbHl0aWNzIjp7InVybCI6Imh0dHBzOi8vY2xpZW50LWFuYWx5dGljcy5icmFpbnRyZWVnYXRld2F5LmNvbS8zZmZkM3pid2J2aG5jZDJtIn0sInBheXBhbEVuYWJsZWQiOnRydWUsInBheXBhbCI6eyJiaWxsaW5nQWdyZWVtZW50c0VuYWJsZWQiOnRydWUsImVudmlyb25tZW50Tm9OZXR3b3JrIjpmYWxzZSwidW52ZXR0ZWRNZXJjaGFudCI6ZmFsc2UsImFsbG93SHR0cCI6ZmFsc2UsImRpc3BsYXlOYW1lIjoiTGVhcm4gRW5vdWdoIiwiY2xpZW50SWQiOiJBWUZCVWx2M0dQWkpRNXppb1JWa3J5WE4weXFvY3NFZXhUXzlvVHFRSUNvYWxudVJmUXYyNlRXdFpTSHhYUndiMTBSQnRjLW96bXBBS1VVVyIsImJhc2VVcmwiOiJodHRwczovL2Fzc2V0cy5icmFpbnRyZWVnYXRld2F5LmNvbSIsImFzc2V0c1VybCI6Imh0dHBzOi8vY2hlY2tvdXQucGF5cGFsLmNvbSIsImRpcmVjdEJhc2VVcmwiOm51bGwsImVudmlyb25tZW50IjoibGl2ZSIsImJyYWludHJlZUNsaWVudElkIjoiQVJLcllSRGgzQUdYRHpXN3NPXzNiU2txLVUxQzdIR191V05DLXo1N0xqWVNETlVPU2FPdElhOXE2VnBXIiwibWVyY2hhbnRBY2NvdW50SWQiOiJMZWFybkVub3VnaF9pbnN0YW50IiwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn19",
        loggedIn: false,
        hasSubscription: false,
        currentMonthlyCost: 0,
        currentCourseBundleIds: [],
        authenticity_token: "Itnu/hPlagkLp8TyIt51/Nn3d/G5O+ATtip89bjWvEYohjWKXkjMBFHj9wKSi5jz6PgUEDfEyKN1y5KSIyyCtg=="
      })
    })

    function onSubmit(token) {
      return Cart.submitForm(true)
    }
  </script>
</form>

GET //www.learnenough.com/search

<form action="//www.learnenough.com/search" method="get">
  <input name="book_id[438]" type="hidden" value="on">
  <input id="j_searchInput" name="q" placeholder="Search in tutorials..." type="text">
</form>

https://app.convertkit.com/landing_pages/4858/subscribe

<form action="https://app.convertkit.com/landing_pages/4858/subscribe" class="ck_subscribe_form" data-remote="true" id="ck_subscribe_form">
  <input id="ck_form_options" type="hidden"
    value="{&amp;quot;form_style&amp;quot;:&amp;quot;minimal&amp;quot;,&amp;quot;embed_style&amp;quot;:&amp;quot;inline&amp;quot;,&amp;quot;embed_trigger&amp;quot;:&amp;quot;scroll_percentage&amp;quot;,&amp;quot;scroll_percentage&amp;quot;:&amp;quot;70&amp;quot;,&amp;quot;delay_seconds&amp;quot;:&amp;quot;10&amp;quot;,&amp;quot;display_position&amp;quot;:&amp;quot;br&amp;quot;,&amp;quot;display_devices&amp;quot;:&amp;quot;all&amp;quot;,&amp;quot;days_no_show&amp;quot;:&amp;quot;15&amp;quot;,&amp;quot;converted_behavior&amp;quot;:&amp;quot;show&amp;quot;}">
  <input id="landing_page_id" name="id" type="hidden" value="4858">
  <div class="ck_errorArea">
    <div id="ck_error_msg" style="display:none;">
      <p>There was an error submitting your subscription. Please try again.</p>
    </div>
  </div>
  <div class="field ck_control_group ck_email_field_group">
    <label class="ck_label" for="ck_emailField" style="display: none">Email Address</label>
    <input class="ck_email_address" id="ck_emailField" name="email" placeholder="Email Address" required="required" type="email">
    <button class="subscribe_button ck_subscribe_button btn fields" id="ck_subscribe_button">Subscribe</button>
  </div>
</form>

Text Content

CREATE ACCOUNT (OR LOG IN )

Email
Public Username
Password
Password Confirmation
You have to make a choice. Choose...wisely.
receive announcement and update emails?

Get occasional notifications about things like product discounts, blog posts,
and new or updated tutorials. Unsubscribe at any time.

No thanks.
Is this a gift?

GIFT DELIVERY OPTIONS

Send Gift by Email (We’ll email the recipient for you)
Print Gift Yourself (Give the gift in a card/envelope)
From Name
Recipient Name
Recipient Email
Personalized Gift Message (optional)
Delivery Date (MM/DD/YYYY - Optional)

QUICK CHECKOUT


Using PayPal Account:
( )
Change

OR PAY BY CREDIT CARD

Card Info





ERROR PROCESSING YOUR PAYMENT

 * You didn't choose whether or not to be added to the mailing list

CONFIRM

Total Today
$0.00
(7 day free trial - Payment will be charged after trial ends)


Complete Checkout

Payments and credit card details are securely managed and protected by Learn
Enough's payment processor, Stripe. More information on their site:


CART

TOTAL

Total Today $0.00

(7 day free trial - Payment will be charged after trial ends)
Checkout Now


YOUR CART IS EMPTY

See the Tutorials

Current $ /mo
$30
New $ /
mo
$300
Change
$300
Checkout Now / Update Subscription Cancel
Just to confirm, new $ /
mo
$XY
Cost Today
$XY
On card ending
1234
Confirm Change Cancel

LEARN ENOUGH
 * 1 (888) 979-2398
 * Courses
 * Plans
 * Gifting
 * The Rails Tutorial
 * For Teams
 * Blog
 * Log In
 * Cart
 * 




LEARN PROFESSIONAL-GRADE WEB APPLICATION DEVELOPMENT WITH RUBY ON RAILS

RUBY ON RAILS (RAILS 7) APPLICATION DEVELOPMENT 03

Since its initial publication in 2010, the Ruby on Rails Tutorial has been one
of the leading introductions to web development. In this bestselling tutorial,
you’ll learn how to develop and deploy real, industrial-strength web
applications with Ruby on Rails, the open-source web framework that powers top
websites such as Hulu, GitHub, Shopify, and Airbnb. This new 7th edition has
been fully updated for Rails 7. Read full post
BUY TUTORIAL : $39 /mo or  $49 /mo (All Access)
- or -

↓ SCROLL DOWN TO LEARN MORE ↓




Play Intro Video
ebooks
883 pages
screencasts
20 hours
course
14 chapters
 
272 videos
 
310 exercises
Free Sample Chapters

GET STARTED NOW!

COURSE SUBSCRIPTIONS

Play Video
$ 39
per month

COURSE

Full online version of the tutorial, embedded streaming videos for all sections,
exercises with editable answers, progress tracking, and membership in the Learn
Enough Society (community exercise answers, private chat group). Pause your
subscription at any time!

Add to Cart
$ 39
per month billed annually

ALL ACCESS SUBSCRIPTION

All Access Subscription includes the course version of all the tutorials
(streaming video, exercise answers, and progress tracking), and access to the
Learn Enough Society to get help if you need it
MORE INFO
All Access

Get the All Access Subscription



WHAT’S LEARN ENOUGH?

Learn Enough is a tech education company founded by Michael Hartl, Lee Donahoe,
and Nick Merwin to teach essential technical skills for the 21st century. Learn
Enough offers ebooks, videos, and online courses covering subjects such as the
Command Line, Text Editor, Git, HTML, CSS & Layout, JavaScript, and Ruby.

The culmination of the Learn Enough curriculum is learning professional-grade
web development with—you guessed it!—the Ruby on Rails Tutorial.

You can get all of the Learn Enough tutorial courses for one monthly price with
the Learn Enough All Access Subscription. The All Access subscription includes
all 10 Learn Enough courses, including the full Ruby on Rails Tutorial. Get
online book content, hours of streaming videos, exercise answers, and more!


About the Founders See All Courses

NEED A LITTLE HELP?

Learn Enough offers a generous scholarship program to help out in case cost is a
factor. We’ve already awarded over 1500 Learn Enough Scholarships to a wide
variety of recipients, including students, people between jobs, and residents of
countries with unfavorable exchange rates. Applications are quick, easy, and
100% confidential. Learn More

MONEY-BACK GUARANTEE

All Learn Enough tutorials come with a 60-day 100% money-back guarantee. If for
any reason you aren’t satisfied with any tutorial purchase, just let us know and
we’ll refund your payment.

LEARN TO MAKE A REAL WEB APPLICATION

IN THE RUBY ON RAILS TUTORIAL




TUTORIAL 03 IN THE
APPLICATION DEVELOPMENT SERIES

With the foundations laid by the previous Learn Enough tutorials, you’re now
ready to learn how to develop larger software systems, including dynamic web
applications. You’ll start by learning either Python or Ruby (or both), using
them for general-purpose programming and to make a simple web application. With
Python, you’ll also learn key Python tools for the fast-growing field of data
science. Learning Ruby, meanwhile, leads naturally into the Ruby on Rails
Tutorial, the leading introduction to web development with Rails. In a final
optional tutorial, you’ll learn how to use Action Cable to make real-time web
apps that respond instantly to user input. By the time you finish these courses,
you'll be ready to start work as a freelancer, get a job as a developer, or
start a web-based company of your own.

PROFESSIONAL-GRADE WEB DEVELOPMENT

BUILDING A REAL WEB APPLICATION

The Ruby on Rails Tutorial teaches you how to develop custom web applications
with the popular Ruby on Rails web framework. Since its launch in 2010, the Ruby
on Rails Tutorial has been the leading introduction to web development with
Rails.

The Ruby on Rails Tutorial is designed to give you a thorough introduction to
web application development, including a basic grounding in Ruby, Rails, HTML &
CSS, databases, version control, testing, and deployment—sufficient to launch
you on a career as a web developer or technology entrepreneur. If you already
know web development, this book will quickly teach you the essentials of the
Rails framework, including MVC and REST, generators, migrations, routing, and
embedded Ruby.

APP DEVELOPMENT PRINCIPLES

THE BASICS OF WORKING WITH RAILS

The Ruby on Rails Tutorial takes an integrated approach to web development by
building three example applications of increasing sophistication, starting with
a minimal hello app, a slightly more capable toy app, and a real sample app. The
emphasis throughout the tutorial is on general principles, so you will have a
solid foundation no matter what kinds of web applications you want to build.

SETTING UP YOUR DEV ENVIRONMENT

WEB DEVELOPMENT REQUIRES TOOLS

In the first chapter, you’ll get started with Ruby on Rails by installing all
the necessary software and by setting up your development environment. You’ll
then create your first Rails application. The Rails Tutorial emphasizes good
software development practices, so immediately after creating your fresh new
Rails project you’ll put it under version control with Git. And, believe it or
not, in the chapter you’ll even put your first app on the wider web by deploying
it to production.

SIMPLE TOY APPLICATION

IT MIGHT NOT BE PRETTY, BUT IT WORKS

In Chapter 2, you’ll make a second project, whose purpose is to demonstrate the
basic workings of a Rails application. To get up and running quickly, you’ll
build this toy app using an automatic code generator; because this code is both
ugly and complex, Chapter 2 will focus on interacting with the toy app through
its URLs using a web browser.

PUTTING EVERYTHING TOGETHER

PUTTING ALL YOUR KNOWLEDGE INTO ACTION

The rest of the tutorial focuses on developing a single large real sample
application, writing all the code from scratch. You’ll develop the sample app
using a combination of mockups, test-driven development (TDD), and integration
tests. You’ll get started in Chapter 3 by creating static pages and then add a
little dynamic content. You’ll take a quick detour in Chapter 4 to learn a
little about the Ruby language underlying Rails. Then, in Chapter 5 through
Chapter 12, you’ll complete the foundation for the sample application by making
a site layout, a user data model, and a full registration and authentication
system (including account activation and password resets). Finally, in Chapter
13 and Chapter 14 you’ll add microblogging and social features to make a working
example site.

The result is a thorough grounding in web application development that will
serve you well as a technical manager, entrepreneur, or professional software
developer.

IS ALL OF THIS…


SOUNDING GOOD?

Read Free Sample Chapters SEE PLAN OPTIONS


HAPPY PEOPLE

SAYING NICE THINGS!

ABOUT THE RUBY ON RAILS TUTORIAL

> The Ruby on Rails Tutorial by Michael Hartl @mhartl https://t.co/rYNs4poudR
> 
> — David Casarez (@DavidCasarez17) April 9, 2020

> lol
> 
> btw your Rails tutorial changed my life. The first of many attempts to learn
> to program that actually stuck.
> 
> — Jonathan Libov (@libovness) May 7, 2019

Just completed the whole tutorial, and I feel I’ve developed a new super power.
Amazing book, it explains the concepts clearly and illustrates them with
powerful examples, I have taken rails tutorials before, but this book gave me
the basis to fully understand and be able to code in rails effortlessly.

— MAURICIO GUZMÁN

-# NEEDS REFERENCE LINK -# NEEDS SCREENSHOT

Well, just wanted to say thank you. Best tutorial as far as I know on RoR. See
you on twitter.

— ROBERT HOPMAN

-# NEEDS REFERENCE LINK -# NEEDS SCREENSHOT



> Spent the last 3 days nonstop doing http://railstutorial.org/ start-to-finish.
> Awesome book, @railstutorial - Thanks!
> 
> — Derek Sivers (@sivers) June 2, 2010

My former company (CD Baby) was one of the first to loudly switch to Ruby on
Rails, and then even more loudly switch back to PHP… This book by Michael Hartl
came so highly recommended that I had to try it, and the Ruby on Rails Tutorial
is what I used to switch back to Rails again… Though I’ve worked my way through
many Rails books, this is the one that finally made me “get” it.

— DEREK SIVERS

– FOUNDER, CD BABY

> Hey Michael! This is a great chance to tell you that going through the
> @RailsTutorial videos years ago was one of the best decisions I ever made.
> Thank you! 🙏🙏🙏
> 
> — Udi Wertheimer (@udiWertheimer) March 15, 2018

Just completed the whole tutorial, and I feel I’ve developed a new super power.

— DAMIAN H.

I’ve just completed all 14 chapters of the Ruby on Rails Tutorial, and I’m very,
very satisfied with the results. I’ve been a very active software engineer since
the late 70’s, always staying up with current technologies, and having a ball
along the way. The way I like to do tutorials is to type in every line of code
myself, read the material at least twice, and do all exercises. Your tutorial
has been more than worth that effort!

I’ve taken many ‘tutorials’ in the last 40 or so years, and I have come to
expect that the tutorial writer ‘burns out’ somewhere around the middle of the
tutorial, and it gets worse as the pages wear on. It is quite clear to me that
you applied all your tools that you’ve used in preparing your physics class
materials, and brought them with you to this work of yours. I am grateful for
your effort, your attention to detail is simply amazingly consistent from start
to finish. This tutorial has greatly aided in my transitioning from desktop /
cpp to distributed apps / ruby.

Thanks to you, I feel that I have been very effectively jump-started into my
role as principal engineer of my tiny new company, and hopefully will have a
ball with this technology for at least another decade.

With great thanks,

— TONY TURNER

PRINCIPAL ENGINEER / FOUNDER, WHITE ROSE TECHNOLOGIES, LLC

> Then @RailsTutorial changed my life and career at 21. Mad props and gratitude
> to @mhartl for his contribution to the community and personally, my life 🙏🏽
> 
> — Bryan Mason (@BryanAKA) August 14, 2019

DAVID HEINEMEIER HANSSON CREATOR, RUBY ON RAILS



ABOUT THE RUBY ON RAILS TUTORIAL

> The Ruby on Rails Tutorial by Michael Hartl @mhartl https://t.co/rYNs4poudR
> 
> — David Casarez (@DavidCasarez17) April 9, 2020

> lol
> 
> btw your Rails tutorial changed my life. The first of many attempts to learn
> to program that actually stuck.
> 
> — Jonathan Libov (@libovness) May 7, 2019

Just completed the whole tutorial, and I feel I’ve developed a new super power.
Amazing book, it explains the concepts clearly and illustrates them with
powerful examples, I have taken rails tutorials before, but this book gave me
the basis to fully understand and be able to code in rails effortlessly.

— MAURICIO GUZMÁN

-# NEEDS REFERENCE LINK -# NEEDS SCREENSHOT

Well, just wanted to say thank you. Best tutorial as far as I know on RoR. See
you on twitter.

— ROBERT HOPMAN

-# NEEDS REFERENCE LINK -# NEEDS SCREENSHOT

> Just finished the outstanding @railstutorial. Probably the best sw tutorial
> I've experienced since K&R. Can't wait for the dead tree version
> 
> — Mike Long (@meekrosoft) November 9, 2010

> Spent the last 3 days nonstop doing http://railstutorial.org/ start-to-finish.
> Awesome book, @railstutorial - Thanks!
> 
> — Derek Sivers (@sivers) June 2, 2010

My former company (CD Baby) was one of the first to loudly switch to Ruby on
Rails, and then even more loudly switch back to PHP… This book by Michael Hartl
came so highly recommended that I had to try it, and the Ruby on Rails Tutorial
is what I used to switch back to Rails again… Though I’ve worked my way through
many Rails books, this is the one that finally made me “get” it.

— DEREK SIVERS

– FOUNDER, CD BABY

> Hey Michael! This is a great chance to tell you that going through the
> @RailsTutorial videos years ago was one of the best decisions I ever made.
> Thank you! 🙏🙏🙏
> 
> — Udi Wertheimer (@udiWertheimer) March 15, 2018

Just completed the whole tutorial, and I feel I’ve developed a new super power.

— DAMIAN H.

I’ve just completed all 14 chapters of the Ruby on Rails Tutorial, and I’m very,
very satisfied with the results. I’ve been a very active software engineer since
the late 70’s, always staying up with current technologies, and having a ball
along the way. The way I like to do tutorials is to type in every line of code
myself, read the material at least twice, and do all exercises. Your tutorial
has been more than worth that effort!

I’ve taken many ‘tutorials’ in the last 40 or so years, and I have come to
expect that the tutorial writer ‘burns out’ somewhere around the middle of the
tutorial, and it gets worse as the pages wear on. It is quite clear to me that
you applied all your tools that you’ve used in preparing your physics class
materials, and brought them with you to this work of yours. I am grateful for
your effort, your attention to detail is simply amazingly consistent from start
to finish. This tutorial has greatly aided in my transitioning from desktop /
cpp to distributed apps / ruby.

Thanks to you, I feel that I have been very effectively jump-started into my
role as principal engineer of my tiny new company, and hopefully will have a
ball with this technology for at least another decade.

With great thanks,

— TONY TURNER

PRINCIPAL ENGINEER / FOUNDER, WHITE ROSE TECHNOLOGIES, LLC

> Then @RailsTutorial changed my life and career at 21. Mad props and gratitude
> to @mhartl for his contribution to the community and personally, my life 🙏🏽
> 
> — Bryan Mason (@BryanAKA) August 14, 2019

> I learned rails through your tutorial. I now make a living working for myself
> with apps all built with Rails. Your tutorial literally changed my life. Thank
> you!
> 
> — Dan Doughty (@dbdoughty_) October 4, 2019

JIMMY WALES FOUNDER, WIKIPEDIA

Q: What is Jimmy Wales' favorite book?

A: It changes often. At the moment, it’s Ruby on Rails Tutorial by Michael
Hartl. :)


Quora link

ABOUT THE LEARN ENOUGH COURSES

I must say, this Learn Enough series is a masterpiece of education. Thank you
for this incredible work!

— MICHAEL K.

I must say, this Learn Enough series is a masterpiece of education. Thank you
for this incredible work!

— MICHAEL K.

> I have nothing but fantastic things to say about @LearnEnough courses. I am
> just about finished with the #javascript course. I must say, the videos are
> mandatory because @mhartl will play the novice, and share in the joy of having
> something you wrote actually work! 🤓
> 
> — claudia marie (@StarvingHearts) May 30, 2019

I want to thank you for the amazing job you have done with the tutorials. They
are likely the best tutorials I have ever read.

— PEDRO I.

I have been trying to learn web development and programming on and off for the
past 3 years and your website is the first one that I feel does the job right.

— JANELLE S.

Just bought the new ebook and want to say keep up the great work!! The Learn
Enough to Be Dangerous series re-ignited my desire to code after 10+ years of
“meh”.

— DIANE Y.

The Learn Enough Society and the courses are incredible. It’s the best value in
the market of online courses in my opinion. Like you say, it’s learning to tech,
which is very useful in our world.

— SÉBASTIEN D.

I just meant to tell you: your tutorial books from the Learn Enough series are
awesome! The books are well-written, clear, concise, super-useful, and even fun
to read. Thank you so, so much for this! I have bought the first three and will
buy whatever you publish next. Keep up doing this very good work and thanks
again.

— PIERRE W.

Have been following the whole “Learn Enough to Be Dangerous” series and am VERY
impressed with it. I am a project manager who works with software developers
daily. These sessions have provided me with a huge amount very useful
information, to the extent that I now not only understand what the dev guys are
talking about, but am starting to use the tools (command line, Git, etc.) that
they use.

— BRIAN

Michael Hartl is one of the best educators around when it comes to web
development. I have been following him for a long time, and everything he
produces is top quality. If you are looking for a quick way to become a thorough
and productive professional web developer, Hartl’s books are a great place to
start.

— ABRAM BAILEY

> Also - if you are working through @RailsTutorial you will probably check out
> @LearnEnough quite soon, which is an incredible resource for people starting
> out. Same high quality as the rails tutorial, while still digestible for
> people starting out.
> 
> — Michael Wallbaum (@mwallba) April 24, 2018

Hi, my name is Philip, and I’m a beginning learner of web development. I’ve
dabbled in small ways in Ruby/Rails for about a year and a half. Occasionally, I
write ruby scripts to solve problems at my job. I also dabble in learning:
JavaScript, Ember, more Ruby/Rails, brief intro readings into Scala.

I’ve tried Codeschool, Codecademy, and I’ll stop there, so you don’t spend the
next 3 hours reading all the different learning resources I’ve tried.

Ruby on Rails Tutorial (Rails 5) is undoubtedly, the most effective and
educational resource I’ve ever come across when it comes to learning anything
about web development or writing any code on any level.

Here’s what you seem to understand that everyone else just gets wrong: There’s a
big spectrum between the very beginner basics: declaring variables, to voodoo,
magical, incantational trickery of witchcraft, like building your own web
server.

Almost all tutorials make this mistake. The first couple “lessons” are good for
people who don’t even have a clue what computer programming is and then
suddenly, there’s a big jump to what seem to be concepts that only seasoned
developers have mastered.

Thanks for such a great, educational guide in Ruby on Rails.

— PHILIP

IS ALL OF THIS…


SOUNDING GOOD?

Read Free Sample Chapters SEE PLAN OPTIONS

IF THAT ALL SOUNDS GOOD...

TRY THE TUTORIAL OUT

Read Free Sample Chapters SEE PLAN OPTIONS

BUYING FOR A TEAM?

Learn Enough offers team licensing through Learn Enough for Teams. Get All
Access subscriptions and downloads for one convenient price, and pay only for
what you need.
Check out the details

ABOUT THE AUTHOR


MICHAEL HARTL

Michael Hartl is the creator of the Ruby on Rails Tutorial, one of the leading
introductions to web development, and is cofounder and principal author at Learn
Enough. Previously, he was a physics instructor at the California Institute of
Technology (Caltech), where he received a Lifetime Achievement Award for
Excellence in Teaching. He is a graduate of Harvard College, has a Ph.D. in
Physics from Caltech, and is an alumnus of the Y Combinator entrepreneur
program.


JOIN THE MAILING LIST

Get occasional notifications about things like product discounts, blog posts,
and new or updated tutorials. Unsubscribe at any time.

Success! Thanks for joining the list.

There was an error submitting your subscription. Please try again.

Email Address Subscribe

LEARN ENOUGH
 * Courses
 * Plans
 * Scholarship
 * For Teams
 * Log In

 * All Access
 * The Rails Tutorial
 * Our Philosophy
 * About
 * News

 * Why Use Ruby on Rails?
 * Why Use the Ruby Language?
 * Why Program?
 * Why Understand Devs?
 * For Beginners

 * Legal
 * Contact

 * Learn Enough
 * 
 * Rails Tutorial


ALL ACCESS SUBSCRIPTION

Get free access to all 10 Learn Enough courses (including the Ruby on Rails
Tutorial) for 7 days!

FREE 7 DAY TRIAL DETAILS

We require a credit card for security purposes, but it will not be charged
during the trial period. After 7 days, you will be enrolled automatically in the
monthly All Access subscription.

BUT you can cancel any time and still get the rest of the 7 days for free!

All Learn Enough tutorials come with a 60-day 100% money-back guarantee.

Billed Yearly
Save up to 20%

Billed Monthly

Monthly Cost: $49

Add to Cart : Free Trial

MORE INFO  

Monthly Cost: $39

Billed $ 468.0 Anually



Add to Cart : Free Trial

MORE INFO  


A QUICK GUIDE TO
YOUR COURSES
WELCOME TO LEARN ENOUGH!