Ruby is just over 20 years old. It's no longer young or hip, and that’s a good thing! In the last decade, Ruby has matured as a web technology. It's being used in many successful companies out there such as Hulu, GitHub, and Bloomberg. The ecosystem is comprised of many stable libraries and tools to handle most common web tasks, allowing you to focus on adding features to improve your product and better serve your customers. We'll talk about how you can build scalable and reliable software, but still maintain fast development turnaround by leveraging the maturity and creativity of the Ruby community.
11. Track: Developers
#CNX14
“I believe that the purpose of life is, at least in
part, to be happy. Based on this belief, Ruby is
designed to make programming not only easy
but also fun. It allows you to concentrate on the
creative side of programming, with less stress.”
- Yukihiro Matsumoto, “Matz”, まつもとゆきひろ
22. Track: Developers
#CNX14
Fuji is the new Leica
"Fuji is the new Leica. It's
true! Fuji is making the world's
best cameras, in every way,
especially when it comes to
functional design
considerations. They are the
only company that putting a
priority on Human-Centered
Design that isn't also charging
$7,000 for their cameras."
23. Track: Developers
#CNX14
"Often people, especially computer engineers,
focus on the machines. But in fact we need to
focus on humans, on how humans care about
doing programming or operating the application
of the machines."
- Yukihiro Matsumoto, “Matz”, まつもとゆきひろ
62. Track: Developers
#CNX14
RSpec
# Gemfile
gem 'rspec'
# my_class_spec.rb
describe MyClass do
before { ... }
let(:foo) { MyClass.new }
it 'accesses the example' do
expect(foo.bar).to eq("bar")
end
end
64. Track: Developers
#CNX14
rspec-mocks
book = double("book", :pages => 250)
allow(book).to receive(:title) { "The RSpec Book" }
65. Track: Developers
#CNX14
rspec-mocks
book = double("book", :pages => 250)
allow(book).to receive(:title) { "The RSpec Book" }
it "calculates the read time" do
book = double("book")
expect(book).to receive(:read_time) { 12.4 }
user.reads(book)
end
66. Track: Developers
#CNX14
Artifice
# Gemfile
gem 'artifice'
# test file
class MockEndpoint < Sinatra::Base
get "/endpoint" do
"foo bar"
end
end
Artifice.activate_with(MockEndpoint) do
# make some requests using Net::HTTP
end
67. Track: Developers
#CNX14
rspec-rails
RSpec.describe User, :type => :model do
it "orders by last name" do
lindeman = User.create!(first_name: "Andy", last_name: "Lindeman")
chelimsky = User.create!(first_name: "David", last_name: "Chelimsky")
expect(User.ordered_by_last_name).to eq([chelimsky, lindeman])
end
end
68. Track: Developers
#CNX14
rspec-rails
RSpec.describe PostsController, :type => :controller do
describe "GET #index" do
it "responds successfully with an HTTP 200 status code" do
get :index
expect(response).to be_success
expect(response).to have_http_status(200)
end
end
end
76. Track: Developers
#CNX14
the metal m/
• separate middleware
• API for request/response objects
• request has read I/O for post body
• response has write I/O for output
79. Track: Developers
#CNX14
Ruby is not young. It may not
even be hip, but it has a rich 20
year history.
80. Track: Developers
#CNX14
There are many
implementations of Ruby that
can fit all shapes, sizes, and
purposes.
81. Track: Developers
#CNX14
There's a vibrant ecosystem of
libraries, tools, and practices
surrounding Ruby.
82. Track: Developers
#CNX14
Ruby has a rich
history.
There's a Ruby for all
kinds of shapes and
sizes.
There's a vibrant
ecosystem of
libraries, tools, and
practices surrounding
Ruby.
Recap Slide
1 2 3
87. Track: Developers
#CNX14
CUSTOMER JOURNEY
SHOWCASE
MARKETING
THOUGHT LEADERS
EMAIL MARKETING PRODUCT STRATEGY
& ROADMAP
PERSONAL
TRANSFORMATION
& GROWTH
SOCIAL MARKETING MOBILE & WEB
MARKETING
DEVELOPERS HANDS-ON
TRAINING
INDUSTRY
TRENDSETTERS
CREATIVITY &
INNOVATION
SALESFORCE FOR
MARKETERS
ROUNDTABLES