Case StudiesBlogO nas
Napisz do nas

Jak skonfigurować projekt w Ruby on Rails z PostgreSQL i GraphQL

Anna Dydio

24 wrz 20213 min czytania

Ruby on RailsGraphQLBack-end development

Spis treści

  • Konfigurowanie GraphQL w Rails

    • Krok 1 — baza danych PostgreSQL

    • Krok 2 — GraphQL w Gemfile

    • Krok 3 — utworzenie bazy danych

    • Krok 4 — Loading...

    • Krok 5 — autorzy i książki

    • Krok 6 — typy Author/Book

    • Krok 7 — mutacje

    • Krok 8 — pierwsze zapytania

  • Na zakończenie

Skonfigurowanie projektu z użyciem Ruby on Rails, PostgreSQL i GraphQL jest w gruncie rzeczy całkiem proste.

Ale najpierw wymagania wstępne. Do tego tutorialu (testowanego odpowiednio na wersjach 2.7.3, 6.1.4.1 i 11.0) musisz mieć zainstalowane na swojej maszynie deweloperskiej wszystkie trzy: Ruby on Rails, PostgreSQL oraz GraphQL.

Przyda się też ogólna znajomość Ruby i Rails.

Zanim jednak zaczniemy, możesz się zastanawiać, po co zastępować całkiem wygodne REST API rozwiązaniem oferowanym przez GraphQL. Jednym z oczywistych powodów jest to, że GraphQL elegancko rozwiązuje problem nadmiernego i niedostatecznego pobierania danych. Z GraphQL dostajesz dokładnie te informacje, o które prosisz — ani mniej, ani więcej. Co więcej, jest niemal samodokumentujące się, więc masz o jedną rzecz mniej do ogarniania. Do zalet GraphQL należą też silne typowanie oraz niezależność od języka i bazy danych. Resztę korzyści zostawię Ci do samodzielnego odkrycia.

A więc do dzieła — skonfigurujmy nasze pierwsze API GraphQL w Ruby on Rails.

Konfigurowanie GraphQL w Rails

Krok 1 — baza danych PostgreSQL

Utwórzmy aplikację API w Ruby on Rails z PostgreSQL jako bazą danych. Zbudujemy proste API półki z książkami.

rails new bookshelf_app -d=postgresql -T —api

Krok 2 — GraphQL w Gemfile

Dodajmy GraphQL do projektu. W tym celu dodaj do Gemfile wpis gem ‘graphql’.

Aby testować zapytania w środowisku deweloperskim, dodaj w sekcji development gem ‘graphiql-rails’.

Teraz zainstalujmy gemy.

bundle install
rails g graphql:install

Upewnij się, że w pliku config/routes.rb masz poniższe wpisy:

if Rails.env.development?
 mount GraphiQL::Rails::Engine, at: 'graphiql', graphql_path: 
 ‘graphql#execute’
end

post ‘/graphql', to: ‘graphql#execute’

Krok 3 — utworzenie bazy danych

Czas utworzyć bazę danych i uruchomić serwer. 

rails db:create db:migrate
rails s

Przejdź w przeglądarce do localhost:3000/graphiql (lub innego portu, jeśli ustawiono). Jeśli widzisz interfejs GraphiQL, możesz pominąć krok 4.

Krok 4 — Loading...

Jeśli wciąż wyświetla się strona Loading…, przejdź do config/application.rb i odkomentuj linię wymagającą „sprockets/railtie”. Następnie utwórz pusty plik app/assets/config/manifest.js.

Zrestartuj serwer. Teraz interfejs GraphiQL powinien być dostępny.

Krok 5 — autorzy i książki

Teraz utworzymy zasoby, generując modele autora i książki. Autorzy mogą mieć wiele książek, a książki należą do autorów.

rails g model Author name
rails g model Book title:text author:references genre:text description
rails db:migrate

Otwórz plik modelu autora, dodaj has_many :books i zapisz, aby powiązania działały poprawnie. 

Świetnie — możemy zaczynać pracę z GraphQL!

Krok 6 — typy Author/Book

Utwórzmy typy Author i Book. 

rails generate graphql:object author
rails generate graphql:object book

Otwórz plik author_type.rb i dodaj pod pozostałymi polami field :books, [Types::BookType], null: true, aby przy zapytaniach o autorów można było od razu pobierać informacje o ich książkach. Typy możesz traktować jak schematy dla konkretnych zasobów.

Krok 7 — mutacje

Skoro typy są gotowe, możemy dodać pierwszą mutację. Mutacje służą do modyfikowania zasobów w bazie danych.

Zacznijmy od mutacji tworzącej autorów. Utwórz plik create_author.rb w app/graphql/mutations i uzupełnij go tak: 

module Mutations
  class CreateAuthor < BaseMutation
    argument :name, String, required: true
  
    type Types::AuthorType

    def resolve(name:)
      Author.create!(name: name)
    end
  end
end

Podobnie dodajmy mutację tworzącą książki. Utwórz plik create_book.rb:

module Mutations
  class CreateBook < BaseMutation
    argument :title, String, required: false
    argument :genre, String, required: false
    argument :description, String, required: false
    argument :author_id, ID, required: true
  
    type Types::BookType

    def resolve(**attributes)
      Book.create!(attributes)
    end
  end
end

Podobne mutacje możesz dodać do aktualizacji i usuwania zasobów.

Gdy będziesz gotowy, dodaj poniższe wpisy do pliku mutation_type.rb:

field :create_author, mutation: Mutations::CreateAuthor
field :create_book, mutation: Mutations::CreateBook

Aby przetestować mutacje, spróbujmy utworzyć pierwszego autora. Przejdź do interfejsu GraphiQL, wprowadź poniższy kod i wykonaj zapytanie.

mutation {
  createAuthor(input: {
    name: "Jane Doe"
  }) {
    id
    name
  }
}

W odpowiedzi powinieneś otrzymać coś w tym stylu:

{
  "data": {
    "createAuthor": {
      "id": "1",
      "name": "Jane Doe"
    }
   }

Teraz w podobny sposób utwórz swoją pierwszą książkę.

Krok 8 — pierwsze zapytania

Na koniec stwórzmy pierwsze zapytania. Aby to zrobić, zaktualizuj plik query_type.rb poniższym kodem. Wszystkie zdefiniowane tu pola będą dostępne przez API.

field :authors, [AuthorType], null: false
field :books, [BookType], null: false
field :author, AuthorType, null: false do
  argument :id, ID, required: true
end
field :book, BookType, null: false do
  argument :id, ID, required: true
end

def authors
  Author.all
end

def books
  Book.all
end

def author(id:)
  Author.find(id)
end

def book(id:)
  Book.find(id)
end

Uruchommy to zapytanie w GraphiQL:

query {
  author(id: 1) {
    id
    name
    books {
      id
      title
    }
  }
}

Jeśli dodałeś do bazy jakieś książki, odpowiedź powinna wyglądać mniej więcej tak:

{
  "data": {
    "author": {
      "id": "1",
      "name": "Jane Doe",
      "books": [
        {
          "id": "1",
          "title": "Book 1"
        },
        {
          "id": "2",
          "title": "Book 2"
        },
        {
          "id": "3",
          "title": "Book 3"
        }
      ]
    }
  }
}

Na zakończenie

I to wszystko. Gratulacje — właśnie stworzyłeś swoje pierwsze Rails GraphQL API!  Jeśli szukasz rozwiązania do autoryzacji, zerknij na gem action_policy-graphql, a więcej wskazówek dotyczących GraphQL w Ruby on Rails znajdziesz tutaj: https://www.howtographql.com/graphql-ruby/0-introduction

Powodzenia! 

Jeśli chcesz dowiedzieć się więcej o innych językach i technologiach wykorzystywanych w SDH, napisz do nas na .

 

Opublikowany 24 września 2021

Udostępnij


Anna Dydio

Junior Ruby Developer

Digital Transformation Strategy for Siemens Finance

Cloud-based platform for Siemens Financial Services in Poland

See full Case Study
Ad image
Blockchain transforming software development
Nie przegap żadnego artykułu - zapisz się do naszego newslettera
Zgadzam się na otrzymywanie komunikacji marketingowej od Startup House. Kliknij, aby zobaczyć szczegóły

Może Ci się również spodobać...

Jak napisać specyfikację wymagań oprogramowania (SRS) dla MVP startupu?
Ruby on RailsMVPAgile

Jak napisać specyfikację wymagań oprogramowania (SRS) dla MVP startupu?

Niezależnie od tego, czy uruchamiasz swój pierwszy startup, czy jesteś doświadczonym przedsiębiorcą, zawsze warto zaczynać pracę od jasnego zdefiniowania struktury projektu. Specyfikacja wymagań dla oprogramowania (Software Requirements Specification, SRS) ułatwi komunikację z zespołem developerskim i pomoże dopilnować, by dostarczyli dokładnie to, czego oczekujesz, a nie to, co zakładają, że masz na myśli.

Michał Merchelski

27 sie 20185 min czytania

Co to jest Ruby on Rails?
Ruby on RailsSoftware development

Co to jest Ruby on Rails?

Ruby on Rails to otwartoźródłowy framework do tworzenia aplikacji internetowych napisany w języku Ruby. Tzw. RoR upraszcza budowę takich aplikacji, generując domyślne struktury dla kodu, bazy danych aplikacji oraz stron internetowych serwowanych do przeglądarki. Programiści uwielbiają go za czytelność, elastyczność i stale rosnące wsparcie społeczności.

Kasia Pryczek

27 sty 20205 min czytania

Ruby on Rails - guide
Ruby on RailsBack-end developmentComputer programming

Jak zainstalować Ruby i Ruby on Rails oraz używać RubyGems

Poznaj przewodnik krok po kroku, który pokaże, jak zainstalować i wykorzystać Ruby on Rails do efektywnego tworzenia aplikacji internetowych. Dowiesz się, jak zainstalować i skonfigurować Ruby, zarządzać różnymi wersjami, korzystać z RubyGems i Bundlera oraz stworzyć nowy projekt w Ruby on Rails. Rozpocznij swoją przygodę z tworzeniem aplikacji w Ruby on Rails dzięki temu kompleksowemu przewodnikowi.

Jan Grela

20 mar 20206 min czytania

Gotowy, aby scentralizować swoje know-how z pomocą AI?

Rozpocznij nowy rozdział w zarządzaniu wiedzą — gdzie Asystent AI staje się centralnym filarem Twojego cyfrowego wsparcia.

Umów bezpłatną konsultację

Pracuj z zespołem, któremu ufają firmy z czołówki rynku.

Rainbow logo
Siemens logo
Toyota logo

Twój partner w cyfrowej transformacji.

Firma

Startup Development House sp. z o.o.

Aleje Jerozolimskie 81

Warszawa, 02-001

VAT-ID: PL5213739631

KRS: 0000624654

REGON: 364787848

Kontakt

hello@startup-house.com

Nasze biuro: +48 789 011 336

Nowy biznes: +48 798 874 852

Obserwuj nas

Award
logologologologo

Copyright © 2026 Startup Development House sp. z o.o.

UE ProjektyPolityka prywatności