Jak skonfigurować projekt w Ruby on Rails z PostgreSQL i GraphQL
Anna Dydio
24 wrz 2021・3 min czytania
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 —apiKrok 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:installUpewnij 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 sPrzejdź 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:migrateOtwó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 bookOtwó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
endPodobnie 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
endPodobne 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::CreateBookAby 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)
endUruchommy 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 hello@start-up.house.
Digital Transformation Strategy for Siemens Finance
Cloud-based platform for Siemens Financial Services in Poland


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

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 2018・5 min czytania

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 2020・5 min czytania

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 2020・6 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.




