Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Tirando Proveito das Rails Engines
Search
Nando Sousa
July 25, 2015
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Tirando Proveito das Rails Engines
Nando Sousa
July 25, 2015
More Decks by Nando Sousa
See All by Nando Sousa
Metaprogramming in Elixir
nandosousafr
0
280
Yet another introduction to concurrency
nandosousafr
4
230
5 basic tips for RubyOnRails projects
nandosousafr
1
460
Robust search with Searchkick
nandosousafr
0
85
Workshop Git para o DevInSanta meetup.
nandosousafr
0
78
Other Decks in Programming
See All in Programming
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
590
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
290
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
4
12k
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
130
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
100
Family mrubyの進捗
kishima
1
130
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
280
一人だけ、Kiroが静止する日
hideg
0
130
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
140
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
230
Featured
See All Featured
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
700
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
520
WCS-LA-2024
lcolladotor
0
830
A Modern Web Designer's Workflow
chriscoyier
699
190k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
A designer walks into a library…
pauljervisheath
211
25k
Transcript
Tirando proveito das Rails Engines
@nandosousafr
None
Ship It! resultadosdigitais.com.br shiptit.resultadosdigitais.com.br
Microserviços tem se tornado um tema bastante popular
"Conjunto de serviços que podem ser deployados de forma independente"
Rails App Example Loja Aplicações Monolíticas Processamento de Pagamento Nota
Fiscal Processamento de Envio
Loja Nota fiscal Processamento de Pagamento Processamento de Envio Rails
App Example Microserviços
Microservices Premature Adoption vs
None
The problem of Rails with large codebases
Rails Engines
3.0 3.1 Introdução Mountable Initializers Asset pipeline Versions
Engines can be considered miniature applications that provide functionality to
their host applications
None
Spree commerce
Rails App Example Processamento de Pagamento Processamento de Envio Loja
Nota Fiscal
Processamento de Pagamento Checkout Gateway App Eventos Gateway Area do
Clientes Flow
$ rails plugin new payment —mountable
create create README.rdoc create Rakefile create payment.gemspec create MIT-LICENSE create
.gitignore create Gemfile create app create app/controllers/payment/application_controller.rb create app/helpers/payment/application_helper.rb create app/mailers create app/models create app/views/layouts/payment/application.html.erb create app/assets/images/payment create app/assets/images/payment/.keep create config/routes.rb create lib/payment.rb create lib/tasks/payment_tasks.rake create lib/payment/version.rb create lib/payment/engine.rb create app/assets/stylesheets/payment/application.css create app/assets/javascripts/payment/application.js create bin create bin/rails create test/test_helper.rb create test/payment_test.rb append Rakefile create test/integration/navigation_test.rb vendor_app test/dummy
# lib/payment/engine.rb module Payment class Engine < ::Rails::Engine isolate_namespace Payment
end end
gemspec $:.push File.expand_path("../lib", __FILE__) # Maintain your gem's version: require
"payment/version" # Describe your gem and declare its dependencies: Gem::Specification.new do |s| s.name = "payment" s.version = Payment::VERSION s.authors = ["Nando Sousa"] s.email = ["
[email protected]
"] s.homepage = "TODO" s.summary = "TODO: Summary of Payment." s.description = "TODO: Description of Payment." s.license = "MIT" s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"] s.test_files = Dir["test/**/*"] s.add_dependency "rails", "~> 4.2.2" s.add_development_dependency "sqlite3" end
gem 'payment', github: 'org/repo' Main APP Gemfile
Rails.application.routes.draw do root 'home#index' mount Payment::Engine => 'payment' end 24
Routes
➜ HostApp bundle exec rake routes Prefix Verb URI Pattern
Controller#Action root GET / home#index payment /payment Payment::Engine Routes for Payment::Engine: root GET / payment/instructions#index notification POST /notification(.:format) payment/notification#process
billing.notification_url Rails.application.routes.draw do root 'home#index' mount Payment::Engine => ‘payment’, as:
:billing end payment.notification_url URL Helper main app
main_app.root_url notification_url URL Helper engine
invoke active_record create db/migrate/20150725085246_create_payment_invoices.rb create app/models/payment/invoice.rb invoke test_unit create test/models/payment/invoice_test.rb
create test/fixtures/payment/invoices.yml $ rails g model Invoice amount Migrations engine
$ rake payment:install:migrations Copied migration 20150725110510_create_payment_invoices.payment.rb from payment $ rake
railties:install:migrations Migrations engine multiple engines
class CreatePaymentInvoices < ActiveRecord::Migration def change create_table :payment_invoices do |t|
t.string :amount t.timestamps null: false end end end
Payment::Engine.load_seed Seed data
app/views/payment/invoices/show.html.erb <%= @invoice.amount %> Main App app/views/payment/invoices/show.html.erb <%= @invoice.amount %>
<%= @invoice.status %> Overiding engine
Load Assets <%= stylesheet_link_tag “payment/style” %>
None
Obrigado @nandosousafr
[email protected]
shipit.resultadosdigitais.com.br Thanks! Nando Sousa @nandosousafr
[email protected]
shipit.resultadosdigitais.com.br
we’re hiring