rbenv-vars
Puma
rbenv-vars | Puma | |
---|---|---|
3 | 43 | |
422 | 7,739 | |
0.0% | 0.3% | |
0.0 | 9.3 | |
about 3 years ago | about 2 months ago | |
Shell | Ruby | |
MIT License | BSD 3-clause "New" or "Revised" License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
rbenv-vars
-
Rails 7: production deploy from scratch (Ubuntu 22.04 edition)
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc $ exec $SHELL $ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build $ git clone https://github.com/rbenv/rbenv-vars.git "$(rbenv root)"/plugins/rbenv-vars $ rbenv install 3.2.0 $ rbenv global 3.2.0 # Test complete install with rbenv-doctor $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash $ ruby -v # Shows ruby version number if correctly installed $ gem install bundler # You might be prompted to update some gems, see command below $ gem update --system 3.4.6 # Check if this is recommended after bundler installation $ bundle -v # Shows bundler version number if correctly installed
-
Rails 7 new production install: from zero to deploy (Ubuntu 20.04 edition)
$ sudo apt update; sudo apt upgrade -y $ sudo apt install rbenv $ rbenv init # Follow instructions: append 'eval "$(rbenv init -)"' to ~/.bashrc $ source ~/.bashrc # or disconnect and reconnect $ mkdir -p "$(rbenv root)"/plugins $ sudo apt install git $ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build $ git clone https://github.com/rbenv/rbenv-vars.git "$(rbenv root)"/plugins/rbenv-vars $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | bash $ rbenv install 3.0.3
- A complete guide to deploying Rails on an Ubuntu VirtualBox VM
Puma
- Ruby, Rails, Multi-threading e Puma: Como tudo isso se conecta?
- Puma 6.6.0 Released – Return to Forever
-
It's Time to Replace TCP in the Datacenter
Unix sockets can use tcp, udp, or be a raw stream
https://en.wikipedia.org/wiki/Unix_domain_socket#:~:text=The....
Puma creates a `UnixServer` which is a ruby stdlib class, using the defaults, which is extending `UnixSocket` which is also using the defaults
https://github.com/puma/puma/blob/fba741b91780224a1db1c45664...
Those defaults are creating a socket of type `SOCK_STREAM`, which is a tcp socket
> SOCK_STREAM will create a stream socket. A stream socket provides a reliable, bidirectional, and connection-oriented communication channel between two processes. Data are carried using the Transmission Control Protocol (TCP).
https://github.com/ruby/ruby/blob/5124f9ac7513eb590c37717337...
You still have the tcp overhead when using a local unix socket with puma, but you do not have any network overhead.
-
Breaking the 300 barrier
As we use Puma as our webserver for our rails application, I quickly went to Puma's config file which typically resides in config/puma.rb. The config was set as
-
Would you consider Rails as stable nowadays ?
They do! It's in the first section of the readme on the repo:
-
Hosting Rails App on AWS
Start with service with systemd
- Recommended way to implement Puma plugin configuration
-
Could not detect rake tasks
# Use the Puma web server [https://github.com/puma/puma] gem "puma", "~> 5.0" # Build JSON APIs with ease [https://github.com/rails/jbuilder] # gem "jbuilder" gem 'rack-cors' gem "devise" gem "jsonapi-serializer" gem 'devise-jwt' gem 'active_model_serializers' gem 'followability' gem 'dotenv-rails', groups: [:development, :test, :production] gem 'sprockets' # Use Redis adapter to run Action Cable in production # gem "redis", "~> 4.0" # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] # gem "kredis" # Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword] # gem "bcrypt", "~> 3.1.7" # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] # Reduces boot times through caching; required in config/boot.rb gem "bootsnap", require: false # Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images] # gem "image_processing", "~> 1.2" # Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible # gem "rack-cors" group :development, :test do # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem gem "debug", platforms: %i[ mri mingw x64_mingw ] end group :development do gem "sqlite3", "~> 1.4" # Speed up commands on slow machines / big apps [https://github.com/rails/spring] # gem "spring" end group :production do gem 'pg' end
-
Dusting off my rails knowledge, need some tips / guidance on rails 7 and production
source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby "3.1.0" # Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main" gem "rails", "~> 7.0.4", ">= 7.0.4.2" # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] gem "sprockets-rails" # Use sqlite3 as the database for Active Record gem "sqlite3", "~> 1.4" # Use the Puma web server [https://github.com/puma/puma] gem "puma", "~> 5.0" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] gem "importmap-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] gem "turbo-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] gem "stimulus-rails" # Build JSON APIs with ease [https://github.com/rails/jbuilder] gem "jbuilder" gem "mongoid" gem "mongoid-grid_fs" gem 'bootstrap', '~> 5.2.2' #sourced from https://github.com/twbs/bootstrap-rubygem gem 'rack-cors' # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ] # Reduces boot times through caching; required in config/boot.rb gem "bootsnap", require: false
-
Write your own Domain Specific Language in Ruby
That doesn't mean one excludes the other. Gems like Puma use the instance_eval method for their configuration file.
What are some alternatives?
rbenv-installer - Installer and doctor scripts for rbenv
falcon - A high-performance web server for Ruby, supporting HTTP/1, HTTP/2 and TLS.
Phusion Passenger - A fast and robust web server and application server for Ruby, Python and Node.js
Thin - A very fast & simple Ruby web server
rbenv - Manage your app's Ruby environment
Iodine - iodine - HTTP / WebSockets Server for Ruby with Pub/Sub support