Framework Frankfurt, Duitsland

Deploy Ruby on Rails op Nodion

Rails 7.1 en nieuwer genereren een Dockerfile, en Nodion bouwt je app daarmee: Ruby, gems, JavaScript-bundling en assets:precompile draaien zoals Rails ze heeft ingericht. Apps met importmap en zonder package.json kunnen in plaats daarvan het Ruby-buildpack gebruiken, dat de assets precompileert en Puma start. In beide gevallen draaien de app en de bijbehorende PostgreSQL-database in Frankfurt.

Op Nodion deployen ›

vanaf 1 EUR / maand

Tot € 15 welkomsttegoed bij registratie

Build
Gegenereerde Dockerfile (Rails 7.1+) of buildpacks
Start
Het commando uit de Dockerfile, of Puma met config/puma.rb (buildpacks)
Health check
/up, ingebouwd in Rails 7.1+
Regio
EU Central (Frankfurt)

Ruby on Rails stap voor stap deployen

  1. Bouw met de gegenereerde Dockerfile Maak een applicatie aan vanuit je GitHub-, GitLab-, Bitbucket- of Gitea-repository in de regio EU Central. Rails 7.1 en nieuwer leveren een Dockerfile mee, dus het formulier selecteert vooraf de Dockerfile-strategie. Dit is de weg voor apps met jsbundling, cssbundling of Vite: de JavaScript-build draait in je Dockerfile, precies zoals je die hebt ingericht.
  2. Stel de master key en de poort in Voeg op het tabblad Environment RAILS_MASTER_KEY toe met de inhoud van config/master.key, als secret. Voor Dockerfile-apps stelt Nodion geen PORT in: de server luistert op de poort van het webproces, die het formulier overneemt uit EXPOSE. Rails 7.1 en 7.2 gebruiken poort 3000 voor Puma. Rails 8 gebruikt poort 80 voor Thruster, dat vóór Puma draait; de image draait als gebruiker zonder rootrechten, dus stel HTTP_PORT=8080 in en kies op het tabblad Processes poort 8080 voor het webproces.
  3. Koppel PostgreSQL Maak een PostgreSQL-database aan in dezelfde regio en koppel die op het tabblad Environment; Rails gebruikt de DATABASE_URL die het bij de volgende deployment krijgt. De gegenereerde bin/docker-entrypoint voert bin/rails db:prepare uit voordat de Rails-server start, dus openstaande migraties draaien wanneer de nieuwe versie opstart. Je kunt ook ./bin/rails db:migrate instellen als release command van de app (API-veld release_command, zie de Docker-handleiding); dat draait één keer per deployment voordat de nieuwe versie start.
  4. Gebruik /up als pad voor de health check Rails 7.1 en nieuwer beantwoorden /up met 200 zodra de app is opgestart; stel dat pad in de app-instellingen in als pad voor de health check. Nodion roept elke instantie aan met haar interne IP als Host, dus als je config.hosts instelt, sluit /up dan uit van de hostcontrole, anders gaat de release nooit live. config/environments/production.rb
    config.hosts << "www.example.com"
    config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
  5. Of gebruik buildpacks voor importmap-apps Een app met importmap en zonder package.json kan in het aanmaakformulier in plaats daarvan voor Buildpacks kiezen. Nodion voert dan bundle install uit zonder development- en test-gems en assets:precompile met RAILS_ENV=production en SECRET_KEY_BASE_DUMMY=1, start Puma met config/puma.rb op PORT en zet RAILS_SERVE_STATIC_FILES en RAILS_LOG_TO_STDOUT. Migraties draaien vanuit een Procfile: Procfile
    release: bin/rails db:migrate

Goed om te weten

  • Solid Queue en SidekiqVoeg met buildpacks worker: bin/jobs (Solid Queue) of worker: bundle exec sidekiq toe aan het Procfile, samen met een expliciete regel web: bundle exec puma -C config/puma.rb; zonder web:-regel wordt de eerste Procfile-regel die geen release: is het standaardcommando. Voeg daarna op het tabblad Processes een proces met de naam worker zonder poort toe. Met de Dockerfile geef je dat proces in plaats daarvan het commando ./bin/jobs of bundle exec sidekiq. Valkey in dezelfde regio geeft Sidekiq zijn REDIS_URL.
  • De extra databases van Rails 8Een Rails 8-app die voor PostgreSQL is gegenereerd, vermeldt in config/database.yml voor productie ook de databases cache, queue en cable, en DATABASE_URL stelt alleen de primaire in. Geef de andere vóór de eerste deployment ook een verbinding, of verwijder de databases die je app niet gebruikt.
  • Ruby-versieMet de Dockerfile komt de Ruby-versie uit RUBY_VERSION in de Dockerfile. Met buildpacks leest Nodion .ruby-version of de ruby-regel in de Gemfile en biedt 3.3, 3.4 (standaard) en 4.0.

Wat Nodion voor je regelt

  • Deploys zonder downtime Push naar je branch en Nodion bouwt een nieuwe release. Het verkeer schakelt over zodra de nieuwe instanties hun health check doorstaan; een mislukte release laat de draaiende versie staan. Apps met een lokaal volume herstarten in plaats daarvan, omdat de schijf bij één instantie hoort.
  • Databases naast de app Managed PostgreSQL, pgvector, MySQL, Valkey en ClickHouse in dezelfde regio. Gekoppelde databases komen binnen als DATABASE_URL, REDIS_URL of CLICKHOUSE_URL.
  • Previews per pull request Zet previews aan en pull requests uit je repository krijgen een eigen app met een eigen URL en nieuwe, lege databases, automatisch of handmatig aangemaakt. Forks en pull requests van bots worden overgeslagen.
  • Workers, cronjobs en schalen Draai workers als extra processen van dezelfde app, plan jobs op het tabblad Cron en schaal elk proces naar maximaal 16 instanties.
  • Releasestap Met buildpacks draait een release:-regel in het Procfile bij elke nieuwe build. Dockerfile-apps, en redeploys of rollbacks naar een eerdere image, gebruiken een releasecommando dat op de app zelf is ingesteld en dat ook voorrang heeft op de Procfile-regel. Bij statische sites draait een releasestap in een image die alleen de gebouwde bestanden bevat.
  • Logs en metrics Build-, release- en runtimelogs plus metrics voor CPU, geheugen, schijf en netwerk van elke instantie in het dashboard.
  • Domeinen en HTTPS Een standaardhostnaam met HTTPS vanaf de eerste deploy; je eigen domeinen krijgen automatisch certificaten.

Verder lezen

Ruby on Rails op Nodion: vragen en antwoorden

Moet ik de Dockerfile aanpassen die Rails heeft gegenereerd?

Meestal niet. Stel RAILS_MASTER_KEY in als secret, controleer de poort van het webproces (en HTTP_PORT bij Rails 8) en gebruik /up als pad voor de health check.

Voert Nodion mijn Rails-migraties uit?

Met de gegenereerde Dockerfile voert bin/docker-entrypoint db:prepare uit wanneer de Rails-server start. Met buildpacks voeg je release: bin/rails db:migrate toe aan een Procfile; die regel draait één keer per build voordat de nieuwe versie start, en een fout stopt de deployment.

Waarom wordt mijn Rails-deployment nooit klaar voor gebruik?

Meestal krijgt de health check een 404 op / omdat er geen rootroute is, of een 403 door de hostcontrole. Stel /up in als pad voor de health check en sluit het uit van de hostcontrole. Controleer bij Rails 8 met de Dockerfile ook of de poort van het webproces overeenkomt met HTTP_PORT.

Kan ik jsbundling of Vite gebruiken?

Ja, met de Dockerfile: de JavaScript-build draait in je Dockerfile, zoals in de Dockerfile die Rails genereert voor jsbundling en cssbundling. De buildpack-route is bedoeld voor importmap-apps zonder package.json.

Waar draait mijn Ruby on Rails-app?

In de regio EU Central in Frankfurt, Duitsland. Build, registry, de app en de bijbehorende databases, volumes, buckets, logs en metrics blijven in die regio, en de API en het control plane van Nodion worden in Duitsland gehost. Nodion GmbH is gevestigd in Stuttgart.

Kan ik Ruby on Rails gebruiken volgens de AVG (GDPR)?

Nodion biedt hiervoor de basis: Nodion GmbH is gevestigd in Stuttgart (Duitsland). Kies je de regio Frankfurt, dan draaien de app, de databases en de volumes in Duitsland. De verwerkersovereenkomst (DPA, art. 28 AVG) sluit je elektronisch af in het dashboard. Of je configuratie aan de AVG voldoet, hangt ook af van hoe je de app instelt en gebruikt.

Wat kost het om Ruby on Rails op Nodion te draaien?

Een appinstantie kost vanaf 1 EUR per maand. De configuratie in het kostenoverzicht kost 5.50 EUR per maand: App 4 EUR, PostgreSQL 1.50 EUR. Prijzen zijn excl. btw en worden per seconde gefactureerd, en je kiest grotere formaten of meer instanties wanneer je ze nodig hebt.

Kan ik een eigen domein gebruiken voor mijn Ruby on Rails-app?

Ja. Elke app krijgt een standaardhostnaam met HTTPS. Voeg je eigen domein toe op het tabblad Domains van de app; het TLS-certificaat wordt automatisch uitgegeven en vernieuwd.

Geef je agent een cloud.

Ontvang tot € 15 welkomsttegoed bij je registratie.

Doorgaan met GitHub

of met e-mail

Blijf op de hoogte.

Productnieuws, geen spam. Je kunt je altijd weer afmelden.