Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DVD of Rails
Search
ogom
August 12, 2014
Programming
0
1.9k
DVD of Rails
Detonation Velocity Development
ogom
August 12, 2014
Tweet
Share
More Decks by ogom
See All by ogom
PicoRuby から始めるたのしい電子工作
ogom
0
1.9k
GraphQL Better Errors
ogom
0
360
Osaka RubyKaigi 02
ogom
0
330
Osaka RubyKaigi 01
ogom
0
210
Contributing to GitLab with OSS Gate
ogom
0
590
DojoCon Japan 2017
ogom
0
140
GDStudy Engage
ogom
1
800
Using Immutable.js with React Redux
ogom
0
150
CoderDojo と オープンソース
ogom
2
500
Other Decks in Programming
See All in Programming
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
790
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
570
バイブコーディング × 設計思考
nogu66
0
110
DataformでPythonする / dataform-de-python
snhryt
0
160
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
9
610
バイブスあるコーディングで ~PHP~ 便利ツールをつくるプラクティス
uzulla
1
330
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
750
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
140
サイトを作ったらNFCタグキーホルダーを爆速で作れ!
yuukis
0
100
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
600
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
280
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
6
1.4k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Scaling GitHub
holman
461
140k
Building Applications with DynamoDB
mza
96
6.5k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
The Language of Interfaces
destraynor
158
25k
Why Our Code Smells
bkeepers
PRO
337
57k
Done Done
chrislema
185
16k
Visualization
eitanlees
146
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Adopting Sorbet at Scale
ufuk
77
9.5k
Transcript
DVD of Rails 63rd RubyKansai Takashi Ogomori
Detonation Velocity Development Ruby on Rails Demonstration of Live Coding.
Let's Make the Doorkeeper with Rails. 2/18
Rails New Rails Server rails new doorswatch cd doorswatch/ rails
server 3/18
Welcome Welcome Controller Root Route rails generate controller welcome index
cat << __EOS__ > ./config/routes.rb Rails.application.routes.draw do root 'welcome#index' end __EOS__ 4/18
Bootstrap Gemfile Bundler gem 'therubyracer', platforms: :ruby echo "gem 'twitter-bootswatch-rails'"
>> Gemfile echo "gem 'twitter-bootswatch-rails-helpers'" >> Gemfile bundle 5/18
Bootswatch Theme Layout rails generate bootswatch:install yeti rails generate bootswatch:import
yeti --force rails generate bootswatch:layout yeti cat << __EOS__ > ./app/controllers/welcome_controller.rb class WelcomeController < ApplicationController layout 'yeti' def index end end __EOS__ 6/18
Hello, world! Container cat << __EOS__ > ./app/views/welcome/index.html.erb <div class="container">
<div class="page-header" id="banner"> <div class="row"> <div class="col-lg-8 col-md-7 col-sm-6"> <h1>Welcome</h1> </div> </div> </div> </div> __EOS__ 7/18
Domain Model 8/18
Resources Group User rails generate scaffold group name:string rake db:migrate
rails generate bootswatch:themed Groups --force rails generate scaffold user name:string email:string rake db:migrate rails generate bootswatch:themed Users --force 9/18
Navbar Partial cat << __EOS__ > ./app/views/layouts/_navbar.html.erb <ul class="nav navbar-nav">
<%= content_tag(:li, class: controller_name == 'groups' ? :active : nil) do %> <% link_to :Groups, groups_path %> <% end %> <%= content_tag(:li, class: controller_name == 'users' ? :active : nil) do %> <% link_to :Users, users_path %> <% end %> </ul> __EOS__ 10/18
References Member Groups Route rails generate scaffold member group:references user:references
rake db:migrate rails generate bootswatch:themed Members --force resources :groups do resources :members end 11/18
Link Groups Show Members Index <%= link_to t('.members', :default =>
t("helpers.links.members")), group_members_path(@group), :class => 'btn' %> <%= link_to t('.new', :default => t("helpers.links.new")), new_group_member_path, :class => 'btn btn-primary' %> 12/18
Model Group User class Group < ActiveRecord::Base has_many :members has_many
:users, through: :members end class User < ActiveRecord::Base has_many :members has_many :groups, through: :members end 13/18
Controller Before Action Create Private before_action :set_group, only: [:new, :create]
@member = @group.members.new(member_params) def set_group @group = Group.find(params[:group_id]) end 14/18
View Form Show <%= form_for [@group, @member], :html => {
:class => 'form-horizontal' } do |f| %> <div class="form-group"> <%= f.label :user_id, :class => 'control-label' %> <%= f.collection_select :user_id, User.all, :id, :name, {prompt: "Select for a user"}, :class => 'form-control' %> </div> <dl class="dl-horizontal"> <dt><strong><%= model_class.human_attribute_name(:group_id) %>:</strong></dt> <dd><%= @member.group.name %></dd> <dt><strong><%= model_class.human_attribute_name(:user_id) %>:</strong></dt> <dd><%= @member.user.name %></dd> </dl> 15/18
Octicons Bundler Plus echo "gem 'octicons-rails'" >> Gemfile bundle <%=
link_to new_group_member_path, :class => 'btn btn-primary' do %> <span class="octicon octicon-plus"></span> <span><%= t('.new', :default => t("helpers.links.new")) %></span> <% end %> 16/18
Gravatar Bundler Image Tag echo "gem 'gravatar_image_tag'" >> Gemfile bundle
<td> <%= gravatar_image_tag(member.user.email, alt: member.user.name, gravatar: { size: 28 }) %> <%= member.user.name %> </td> 17/18
Thank You! ♥ ɿ? 18/18