- Ruby, Not Rails, see it at http://onebrokeb.com/ruby-not-rails
- Reserve the domain on Black Friday
- Get the app hosted on the domain
- Interview Julian (or whomever) to try it out and make sure you like the questions and the way the site looks
- Amend the process as necessary
- Update the site as necessary
- Publish Julian's interview.
- Find one human to agree to an interview
- Find another human to agree to an interview
- Find yet another human to agree to an interview :P
- Send the humans the email!
- lending library
- A plan. This is just me thinking through it, about what I'd expect the order to be.
But Feel free to edit this as it changes -- or discard it in favour of your own way of working :)
I probably also included more than I need to, but I feel like it goes much faster to have it broken down.
Plus I wanted to think through it a bit.
- Make the Rails App
- Set up RSpec
- Acceptance test (in RSpec or Cucumber or w/e) You can use the one I came up with, translating as necessary, or write your own.
- Begin working through the acceptance test, creating things as you need them. It will probably go something like the following
- Root route points to the BooksController#index
- BooksController and the index method, which gets the books
- Book model (schema we discussed is below)
-
books/index.html.erb
- Test and logic to find how many copies of a book are available (probably it's the number of copies that have a checkout date with no checkin date)
-
BooksController#show
andbooks/show.html.erb
-
GET /books/:id/borrow
route toBooksController#borrow_form
with viewbooks/borrow_form.html.erb
- A class that takes a book and hash of
{name: "Betsy Book Borrower", phone: "555-555-5555", email: "betsy@example.com"}
and creates a status for it (hmm, looks like it might need a book id, too, since we won't know the copy until you give it to them). I'd probably put this in something likeapp/use_cases/borrow_book.rb
, your controller will ultimately delegate to it. You'll want to drive this one with unit level tests. - Email... uhm, I have no idea, I've never set this up :D
-
GET /statuses/:id/edit
toStatusesController#edit
withstatuses/edit.html.erb
view - The
StatusesController
is protected by basic http auth -
PUT /statuses/:id
toStatusesController#update
which renders the edit view - Have a drink :D
- Acceptance test inspiration (not Gherkin, but not too far off, probably implement it as Cucumber or an RSpec feature test)
As someone from the Rails Girls DC meetup I'm coming to the Library to see what books I can borrow Happy path to borrowing a book: User goes to the website They see a list of all the books They click the title "The Little Book of Talent" They are on "The Little Book of Talent" show page they see all its information and how many books are available there are 2 books available they click the borrow button they are on a form with the name of the book and an explanation of the checkout process they fill in their name/email/phone they click the confirm button they are on a "thanks" page with some follow up info of what to expect britney receives an email with the subject "Sarah wants to borrow The Little Book of Talent" the body includes sarah's personal info and the book info and a link to the status page britney interacts w/ sarah and gives her the book britney goes to the status to include the checkout date and the copy id the quantity is shown to have decreased by one sarah returns the book britney edits the status again, this time adding the checkin date the quantity is shown to have increased by one
- Expected models (though, things sometimes deviate once you get to implementing them)
book image title description link for further info year copies book id statuses name phone email copy id checkout date checkin date
- A plan. This is just me thinking through it, about what I'd expect the order to be.
But Feel free to edit this as it changes -- or discard it in favour of your own way of working :)
I probably also included more than I need to, but I feel like it goes much faster to have it broken down.
Plus I wanted to think through it a bit.