SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Rails engines in
large apps
Created by /Enrico Teotti @agenteo
Start off with a small
application
and the app complexity will
grow over time
Start off with a big complex
application
ignoring complexity will hurt
you
In Ruby on Rails that is:
too many responsibilities in
active record models
long controller methods
helpers modules doing a
gazillion things
concerns
These poor decisions are sometime justified as:
"This is the Rails way!"
"Those are the Rails
conventions!"
"This is what a Rails developer
expect to see!"
bullshit
Rails gives conventions that fit small application domains but doesn't
have any for larger problems
How can Ruby on Rails engines
help?
Engines can drop in functionality in your Rails monolithic app
Devise
Kaminari
But they can do more that that
"Rails::Engine allows you to wrap a specific Rails application or subset of
functionality and share it with other applications or within a larger
packaged application. Since Rails 3.0, every Rails::Application is just an
engine, which allows for simple feature and application sharing."
Rails API
we will create very specific engine only used in this app
Domain Model
This is a domain model taken from Evan's book DDD
It is a simplified version of a real live problem
use Engines as building bricks
of the application!
First, create an integration test
in the main app
spec/features/ship_cargo_spec.rb
require 'spec_helper'
feature 'As a staff member I want to ship a cargo' do
scenario %{
Given I am on the cargo shipping page
When I fill in a customer
And I fill in a origin and destination
Then I want to see an itinerary } do
visit '/ship_cargo'
end
end
rspec
F
Failures:
1) As a staff member I want to ship a cargo
Given I am on the cargo shipping page
When I fill in a customer
And I fill in a origin and destination
Then I want to see an itinerary
Failure/Error: visit '/ship_cargo'
ActionController::RoutingError:
No route matches [GET] "/ship_cargo"
# ./spec/features/ship_cargo_spec.rb:10:in `block (2 levels) in <top (required)="">'
Finished in 0.00523 seconds
1 example, 1 failure
</top>
Create an engine
rails plugin new cargo_shipping --mountable -T --dummy-path=spec/dummy
You can create a nested folder
structure
If you want to be more formal about the separation of
responsibilities between the engines
The engine name will match ubiquitous language you share with
stakeholders
engines/
├── application_layer
├── domain_layer
│ ├── billing
│ ├── customer
│ └── shipping
└── presentation_layer
└── cargo_shipping
Main app Gemfile
gem 'cargo_shipping', path: 'engines/presentation_layer/cargo_shipping'
Cargo Shipping Engine
structure
engines/presentation_layer/cargo_shipping/
├── Gemfile
├── Gemfile.lock
├── MIT-LICENSE
├── README.rdoc
├── Rakefile
├── app
│ ├── assets
│ ├── controllers
│ ├── helpers
│ ├── mailers
│ └── views
├── cargo_shipping.gemspec
├── config
│ └── routes.rb
├── lib
│ ├── cargo_shipping
│ ├── cargo_shipping.rb
│ └── tasks
└── spec
└── dummy
CargoShipping Engine routes
engines/presentation_layer/cargo_shipping/config/routes.rb
module PresentationLayer
CargoShipping::Engine.routes.draw do
get 'ship_cargo', to: 'ship_cargo#new'
end
end
CargoShipping Engine
controller
engines/presentation_layer/cargo_shipping/app/controllers/cargo_shipping/ship_cargo_controller.rb
module CargoShipping
class ShipCargoController < ActionController::Base
def new
end
end
end
Run the test again!
F
Failures:
1) As a staff member I want to ship a cargo
Given I am on the cargo shipping page
When I fill in a customer
And I fill in a origin and destination
Then I want to see an itinerary
Failure/Error: visit '/ship_cargo'
ActionController::RoutingError:
No route matches [GET] "/ship_cargo"
# ./spec/features/ship_cargo_spec.rb:10:in `block (2 levels) in <top (required)="">'
Finished in 0.00523 seconds
1 example, 1 failure
</top>
We need to change the main
app routes!
config/routes.rb
Maersk::Application.routes.draw do
mount CargoShipping::Engine, at: "/"
end
rspec
.
Finished in 0.05205 seconds
1 example, 0 failures
CargoShipping Engine
engines/presentation_layer/cargo_shipping/app/controllers/cargo_shipping/ship_cargo_controller.rb
module CargoShipping
class ShipCargoController < ActionController::Base
def new
@customers = Customers::CustomerRepository.all
end
end
end
rspec
F
Failures:
1) As a staff member I want to ship a cargo
Given I am on the cargo shipping page
When I fill in a customer
And I fill in a origin and destination
Then I want to see an itinerary
Failure/Error: visit '/ship_cargo'
NameError:
uninitialized constant CargoShipping::ShipCargoController::Customers
# ./engines/presentation_layer/cargo_shipping/app/controllers/cargo_shipping/ship_cargo_controller.r
# ./spec/features/ship_cargo_spec.rb:10:in `block (2 levels) in <top (required)="">'
Finished in 0.04333 seconds
1 example, 1 failure
</top>
Create a domain layer engine
rails plugin new customers --mountable -T --dummy-path=spec/dummy
Main app Gemfile
gem 'cargo_shipping', path: 'engines/presentation_layer/cargo_shipping'
gem 'customers', path: 'engines/domain_layer/customers'
Generating models in
Customers Engine
engines/domain_layer/customers/app/models/customers/customer_repository.rb
rails generate model CustomerRepository email name
invoke active_record
create db/migrate/20130921154844_create_customers_customer_repositories.rb
create app/models/customers/customer_repository.rb
invoke rspec
create spec/models/customers/customer_repository_spec.rb
rspec
.
Finished in 0.05205 seconds
1 example, 0 failures
Mailing list:
https://groups.google.com/forum/?hl=en#!forum/components-in-rails
References:
Wrangling Large Rails Codebases
Architecting your Rails app for success!
http://pivotallabs.com/leave-your-migrations-in-your-rails-
engines/
http://pivotallabs.com/experience-report-engine-usage-that-
didn-t-work/
THE END
Enrico Teotti / @agenteo / teotti.com

Más contenido relacionado

La actualidad más candente

How to set up and test a Rails 3 Engine
How to set up and test a Rails 3 EngineHow to set up and test a Rails 3 Engine
How to set up and test a Rails 3 Enginenicholasf
 
SPA using Rails & Backbone
SPA using Rails & BackboneSPA using Rails & Backbone
SPA using Rails & BackboneAshan Fernando
 
What's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewWhat's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewMaxim Veksler
 
Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Fwdays
 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapMarcio Marinho
 
Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Ryan Szrama
 
Ruby conf 2011, Create your own rails framework
Ruby conf 2011, Create your own rails frameworkRuby conf 2011, Create your own rails framework
Ruby conf 2011, Create your own rails frameworkPankaj Bhageria
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5Rory Gianni
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2Rory Gianni
 
Intro to Ruby on Rails
Intro to Ruby on RailsIntro to Ruby on Rails
Intro to Ruby on RailsMark Menard
 
How angularjs saves rails
How angularjs saves railsHow angularjs saves rails
How angularjs saves railsMichael He
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaPierre-André Vullioud
 
RoR 101: Session 3
RoR 101: Session 3RoR 101: Session 3
RoR 101: Session 3Rory Gianni
 
Hello World on Slim Framework 3.x
Hello World on Slim Framework 3.xHello World on Slim Framework 3.x
Hello World on Slim Framework 3.xRyan Szrama
 
Project Fedena and Why Ruby on Rails - ArvindArvind G S
Project Fedena and Why Ruby on Rails - ArvindArvind G SProject Fedena and Why Ruby on Rails - ArvindArvind G S
Project Fedena and Why Ruby on Rails - ArvindArvind G SThoughtWorks
 
AngularJS meets Rails
AngularJS meets RailsAngularJS meets Rails
AngularJS meets RailsElena Torró
 
Páginas Dinâmicas de Erro em Rails com Goalie
Páginas Dinâmicas de Erro em Rails com GoaliePáginas Dinâmicas de Erro em Rails com Goalie
Páginas Dinâmicas de Erro em Rails com GoalieHelder Ribeiro
 
Using Angular with Rails
Using Angular with RailsUsing Angular with Rails
Using Angular with RailsJamie Davidson
 

La actualidad más candente (20)

Rails::Engine
Rails::EngineRails::Engine
Rails::Engine
 
How to set up and test a Rails 3 Engine
How to set up and test a Rails 3 EngineHow to set up and test a Rails 3 Engine
How to set up and test a Rails 3 Engine
 
SPA using Rails & Backbone
SPA using Rails & BackboneSPA using Rails & Backbone
SPA using Rails & Backbone
 
What's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overviewWhat's new in Rails 5 - API Mode & Action Cable overview
What's new in Rails 5 - API Mode & Action Cable overview
 
Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)Ruby w/o Rails (Олександр Сімонов)
Ruby w/o Rails (Олександр Сімонов)
 
Cocoa on-rails-3rd
Cocoa on-rails-3rdCocoa on-rails-3rd
Cocoa on-rails-3rd
 
Ruby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter BootstrapRuby on Rails + AngularJS + Twitter Bootstrap
Ruby on Rails + AngularJS + Twitter Bootstrap
 
Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7Making the Most of Modern PHP in Drupal 7
Making the Most of Modern PHP in Drupal 7
 
Ruby conf 2011, Create your own rails framework
Ruby conf 2011, Create your own rails frameworkRuby conf 2011, Create your own rails framework
Ruby conf 2011, Create your own rails framework
 
RoR 101: Session 5
RoR 101: Session 5RoR 101: Session 5
RoR 101: Session 5
 
RoR 101: Session 2
RoR 101: Session 2RoR 101: Session 2
RoR 101: Session 2
 
Intro to Ruby on Rails
Intro to Ruby on RailsIntro to Ruby on Rails
Intro to Ruby on Rails
 
How angularjs saves rails
How angularjs saves railsHow angularjs saves rails
How angularjs saves rails
 
Don't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and JoomlaDon't worry be API with Slim framework and Joomla
Don't worry be API with Slim framework and Joomla
 
RoR 101: Session 3
RoR 101: Session 3RoR 101: Session 3
RoR 101: Session 3
 
Hello World on Slim Framework 3.x
Hello World on Slim Framework 3.xHello World on Slim Framework 3.x
Hello World on Slim Framework 3.x
 
Project Fedena and Why Ruby on Rails - ArvindArvind G S
Project Fedena and Why Ruby on Rails - ArvindArvind G SProject Fedena and Why Ruby on Rails - ArvindArvind G S
Project Fedena and Why Ruby on Rails - ArvindArvind G S
 
AngularJS meets Rails
AngularJS meets RailsAngularJS meets Rails
AngularJS meets Rails
 
Páginas Dinâmicas de Erro em Rails com Goalie
Páginas Dinâmicas de Erro em Rails com GoaliePáginas Dinâmicas de Erro em Rails com Goalie
Páginas Dinâmicas de Erro em Rails com Goalie
 
Using Angular with Rails
Using Angular with RailsUsing Angular with Rails
Using Angular with Rails
 

Similar a Rails engines in large apps

Lightening a component based Rails architecture
Lightening a component based Rails architectureLightening a component based Rails architecture
Lightening a component based Rails architectureEnrico Teotti
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010arif44
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
Selenium Training in Amritsar
Selenium Training in AmritsarSelenium Training in Amritsar
Selenium Training in AmritsarE2MATRIX
 
Selenium Training in Jalandhar
Selenium Training in JalandharSelenium Training in Jalandhar
Selenium Training in JalandharE2MATRIX
 
Selenium Training in Mohali
Selenium Training in MohaliSelenium Training in Mohali
Selenium Training in MohaliE2MATRIX
 
Selenium Training in Chandigarh
Selenium Training in ChandigarhSelenium Training in Chandigarh
Selenium Training in ChandigarhE2MATRIX
 
Selenium Training in Phagwara
Selenium Training in PhagwaraSelenium Training in Phagwara
Selenium Training in PhagwaraE2MATRIX
 
Selenium Training in Ludhiana
Selenium Training in LudhianaSelenium Training in Ludhiana
Selenium Training in LudhianaE2MATRIX
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Railsanides
 
Rails in the bowels
Rails in the bowelsRails in the bowels
Rails in the bowelsCreditas
 
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>tutorialsruby
 

Similar a Rails engines in large apps (20)

Lightening a component based Rails architecture
Lightening a component based Rails architectureLightening a component based Rails architecture
Lightening a component based Rails architecture
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010Ruby On Rails Seminar Basis Softexpo Feb2010
Ruby On Rails Seminar Basis Softexpo Feb2010
 
Rails onCpanel
Rails onCpanelRails onCpanel
Rails onCpanel
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
Railties
RailtiesRailties
Railties
 
Rails engines
Rails enginesRails engines
Rails engines
 
TorqueBox
TorqueBoxTorqueBox
TorqueBox
 
Selenium Training in Amritsar
Selenium Training in AmritsarSelenium Training in Amritsar
Selenium Training in Amritsar
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 
Rails Concept
Rails ConceptRails Concept
Rails Concept
 
Selenium Training in Jalandhar
Selenium Training in JalandharSelenium Training in Jalandhar
Selenium Training in Jalandhar
 
Selenium Training in Mohali
Selenium Training in MohaliSelenium Training in Mohali
Selenium Training in Mohali
 
Selenium Training in Chandigarh
Selenium Training in ChandigarhSelenium Training in Chandigarh
Selenium Training in Chandigarh
 
Selenium Training in Phagwara
Selenium Training in PhagwaraSelenium Training in Phagwara
Selenium Training in Phagwara
 
Selenium Training in Ludhiana
Selenium Training in LudhianaSelenium Training in Ludhiana
Selenium Training in Ludhiana
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Dev streams2
Dev streams2Dev streams2
Dev streams2
 
Rails in the bowels
Rails in the bowelsRails in the bowels
Rails in the bowels
 
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
Build Comet applications using Scala, Lift, and &lt;b>jQuery&lt;/b>
 

Más de Enrico Teotti

Facilitating an online Agile Retrospective.pdf
Facilitating an online Agile Retrospective.pdfFacilitating an online Agile Retrospective.pdf
Facilitating an online Agile Retrospective.pdfEnrico Teotti
 
Build and maintain large Ruby applications 2023
Build and maintain large Ruby applications 2023Build and maintain large Ruby applications 2023
Build and maintain large Ruby applications 2023Enrico Teotti
 
Facilitating online agile retrospectives
Facilitating online agile retrospectivesFacilitating online agile retrospectives
Facilitating online agile retrospectivesEnrico Teotti
 
Measure success in agile retrospectives
Measure success in agile retrospectivesMeasure success in agile retrospectives
Measure success in agile retrospectivesEnrico Teotti
 
Build and maintain large ruby applications - LA Ruby Oct meetup
Build and maintain large ruby applications - LA Ruby Oct meetupBuild and maintain large ruby applications - LA Ruby Oct meetup
Build and maintain large ruby applications - LA Ruby Oct meetupEnrico Teotti
 
3 things about public speaking
3 things about public speaking3 things about public speaking
3 things about public speakingEnrico Teotti
 
Build and maintain large ruby applications Ruby Conf Australia 2016
Build and maintain large ruby applications Ruby Conf Australia 2016Build and maintain large ruby applications Ruby Conf Australia 2016
Build and maintain large ruby applications Ruby Conf Australia 2016Enrico Teotti
 
Build and maintain large Ruby apps 0.0.1
Build and maintain large Ruby apps 0.0.1Build and maintain large Ruby apps 0.0.1
Build and maintain large Ruby apps 0.0.1Enrico Teotti
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 Enrico Teotti
 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails enginesEnrico Teotti
 

Más de Enrico Teotti (12)

Facilitating an online Agile Retrospective.pdf
Facilitating an online Agile Retrospective.pdfFacilitating an online Agile Retrospective.pdf
Facilitating an online Agile Retrospective.pdf
 
Build and maintain large Ruby applications 2023
Build and maintain large Ruby applications 2023Build and maintain large Ruby applications 2023
Build and maintain large Ruby applications 2023
 
Facilitating online agile retrospectives
Facilitating online agile retrospectivesFacilitating online agile retrospectives
Facilitating online agile retrospectives
 
Measure success in agile retrospectives
Measure success in agile retrospectivesMeasure success in agile retrospectives
Measure success in agile retrospectives
 
Structured retros
Structured retrosStructured retros
Structured retros
 
Build and maintain large ruby applications - LA Ruby Oct meetup
Build and maintain large ruby applications - LA Ruby Oct meetupBuild and maintain large ruby applications - LA Ruby Oct meetup
Build and maintain large ruby applications - LA Ruby Oct meetup
 
3 things about public speaking
3 things about public speaking3 things about public speaking
3 things about public speaking
 
Build and maintain large ruby applications Ruby Conf Australia 2016
Build and maintain large ruby applications Ruby Conf Australia 2016Build and maintain large ruby applications Ruby Conf Australia 2016
Build and maintain large ruby applications Ruby Conf Australia 2016
 
Build and maintain large Ruby apps 0.0.1
Build and maintain large Ruby apps 0.0.1Build and maintain large Ruby apps 0.0.1
Build and maintain large Ruby apps 0.0.1
 
Mindset
MindsetMindset
Mindset
 
feature flagging with rails engines v0.2
feature flagging with rails engines v0.2 feature flagging with rails engines v0.2
feature flagging with rails engines v0.2
 
Feature flagging with rails engines
Feature flagging with rails enginesFeature flagging with rails engines
Feature flagging with rails engines
 

Último

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Rails engines in large apps