window.pipedriveLeadboosterConfig = { base: leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on juba olemas') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Lihtne Ruby rakendus algusest peale koos Active Recordiga - The Codest
The Codest
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Tööstusharud
    • Fintech & pangandus
    • E-commerce
    • Adtech
    • Healthtech
    • Tootmine
    • Logistika
    • Autotööstus
    • IOT
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
  • Meie kohta
  • Teenused
    • Tarkvaraarendus
      • Frontend arendus
      • Backend arendus
    • Staff Augmentation
      • Frontend arendajad
      • Backend arendajad
      • Andmeinsenerid
      • Pilveinsenerid
      • QA insenerid
      • Muud
    • See nõuandev
      • Audit ja nõustamine
  • Väärtus
    • CEO
    • CTO
    • Tarnejuht
  • Meie meeskond
  • Case Studies
  • Tea kuidas
    • Blogi
    • Kohtumised
    • Veebiseminarid
    • Ressursid
Karjäärivõimalused Võtke ühendust
Tagasi nool TAGASI
2021-07-07
Tarkvaraarendus

Lihtne Ruby rakendus algusest peale koos Active Recordiga

The Codest

Damian Watroba

Software Engineer

MVC on disainimudel, mis jagab rakenduse vastutusalad, et muuta liikumine lihtsamaks. Rails järgib seda disainimustrit kokkuleppeliselt.

Mulle meeldib töötada koos Rööpad sest ma saan lihtsalt ja kiiresti luua toimiva rakenduse ja näidata seda maailmale või ainult oma sõpradele. Siiski on olemas rakenduste tüübid, mis ei vaja nii suurt raamistikku kui Rööpad ja kõik selle funktsioonid.

Võib juhtuda, et meie rakendus vajab kogu MVC mustrist ainult M (Model). Mudel-kontroller. Kas tasub alustada projekt aadressil Rööpad kui me teame, et V-C (View-Controller) osa ei ole vaja?

On hea teada, et Aktiivne rekord , Active Model, Action Pack ja Action View, mis vastutavad MVC eest, saab kasutada iseseisvalt väljaspool Rööpad. See võimaldab meil luua lihtsa Ruby rakendus millel on andmebaasiühendus ja arendada seda ilma tarbetu kood ja raamatukogud, mille me saaksime paketis, kui käivitaksime käsu rails new.

Olen kirjeldanud samm-sammult, kuidas seda saavutada, ja kogu koodi leiate GitHubist. Link on selle artikli lõpus. 

Struktuur

Meie projekti alustamiseks ei ole meil palju vaja. Alustame loomisest Gemfile kus me lisame rakenduses töötamiseks vajalikud pärlid koos versiooniga Ruby mida me kasutame.

 cat Gemfile

# frozen_string_literal: true

allikas 'https://rubygems.org'

ruby '2.7.2'

Vabatahtlik README.md faili eesmärk on kirjeldada, kuidas meie rakendus töötab ja kuidas selle kallal edasi töötada, nii meile endile kui ka teistele arendajatele, kes tahavad tulevikus koos meiega projekti arendada.

cat README.md

# rakendus

TO DO: Kustuta see ja ülaltoodud tekst ning kirjelda oma rakendust.

app kataloogi application.rb faili, mis vastutab meie rakendusse lisatavate raamatukogude ja failide konfigureerimise ja laadimise eest. Ärge unustage käivitada komplekti paigaldamine genereerida Gemfile.lock. Meie rakenduse struktuur peaks selles etapis välja nägema selline:

puu
 .
 ├── Gemfile
 ├── Gemfile.lock
 ├── README.md
 └─ app
     └── application.rb

Andmebaas

Kui selline struktuur on valmis, saame kaaluda, millise andmebaasi mootori valida ja konfigureerida. Selle artikli jaoks valisin PostgresQL, millega mul on kõige rohkem kogemusi. See võib olla ka MySQL või SQlite3 või mõni muu mootor, mis töötab koos Aktiivne rekord. Tehnoloogia valikul on hea juhinduda rakenduse eesmärgist, milleks seda kasutatakse ja mis on selle eesmärk. 

Kiireks ja lihtsaks andmebaasi konfigureerimiseks kasutasin dockerit ja docker-compose'i. Ma ei taha nende tööriistade konfigureerimist, nende plusse ja miinuseid lähemalt kirjeldada, kuid kui te pole kunagi varem dockerit kasutanud, siis viitan teile ametliku dokumentatsiooni jaoks Docker ja Docker Compose lisateabe saamiseks.

# docker-compose.yml

versioon: '3.7'
services:
  postgresql:
    image: postgres:12.0-alpine
    Pordid:
- 5432:5432
    keskkond:
- PGDATA=/postgresql
- POSTGRESPASSWORD=postgres
- POSTGRESUSER=postgres
    mahud:
- db-volume:/postgresql
volumes:
  db-volume: db-volume:

Meil on vaja lisada ka meie Gemfile

 gem 'pg'

ja meie application.rb fail

# app/application.rb

require 'pg'

moodul Application

  class Error < StandardError; end

# Teie kood läheb siia...

end

Iseseisvad migratsioonid, Rake

Järgmine samm meie rakenduse konfigureerimisel on lisada rakendusele standalone_migrations ja rake gems, mis võimaldab meil hallata meie migratsiooni nagu Railsis ja saada ligipääsu rake db: käskudele. 

  1. Ajakohastamine Gemfile vajalike kalliskividega ja teha komplekti paigaldamine
# kalliskivi, mida kasutatakse mitte-rööbaste ja mitte-rubiini rakendustes.

gem 'standalone_migrations'

# standalone_migrations vajab rake'i, et oleks võimalik luua migratsioone ja käivitada neid, nagu Railsis.

gem 'rake'

# Gem on vajalik keskkonnamuutujate laadimiseks.

gem 'dotenv'
  1. Lisame Rakefile meie projekti juurkataloogi, kuhu me laadime dotenv ja standalone_migrations mida me lisasime varem 
# frozen_string_literal: true

require 'dotenv'

Dotenv.load

require 'standalone_migrations'

StandaloneMigrations::Tasks.load_tasks

Koos Rakefile selliselt konfigureerituna saame kontrollida, kas meie rake töötab, kasutades rake -T käsk, mis peaks tagastama nimekirja meie rakenduses saadaval olevatest käskudest.

rubiinirakendus
  1. Enne rake db:create, meil peab olema projektis ikkagi konfiguratsioonifail, et luua ühendus Postgres'i instantsiga. Selleks peame looma db kataloogi koos db config.yml faili, mis peaks välja nägema nagu allpool:
# db/config.yml

vaikimisi: &default

  adapter: postgresql

  kodeerimine: unicode

  bassein: 

  andmebaas: 

  kasutajanimi: 

  password: 

  host: 

  port: 

arendus:

  <<: *default

test:

  <<: *default

staging:

  <<: *default

tootmine:

  <<: *default

Nagu näete, kasutasin keskkonnamuutujaid, et konfigureerida ühendus meie Postgresiga, kus me hoiame tundlikke andmeid, mis ei tohiks olla repositooriumis. Selleks kasutasin eelnevalt lisatud gem dotenv, mis lisati ka Rakefile koos standalone_migrations. Kui me kasutame oma rakenduse versioonihalduse haldamiseks Git'i, siis meenutame, et peame lisama faili .gitignore faili, kus me lülitame välja võimaluse jälgida .env faili meie projektist.

 # .gitignore
.env*
!.env.example

ja lisada.env fail, mis sisaldab õigesti konfigureeritud ENV

# .env

DATABASE_NAME="development"

DATABASE_USER="postgres"

DATABASE_PASSWORD="postgres"

DATABASE_HOST="localhost"

DATABASE_PORT="5432"
  1. Selles etapis peaksime olema võimelised käivitama rake db:create käsk, mis loob andmebaasi

    Ruby veebirakendus

  2. Proovime lisada uue rände kaudu rake db:new_migration name=, kus me loome postitused tabel koos :title veerg

    Rails veebirakendus

# frozen_string_literal: true

class CreatePosts < ActiveRecord::Migration[6.0]

  def change

    create_table :posts do |t|

      t.string :title

    end

  end

end
Ruby on Rails veebirakendus

Te peaksite märkama, et db/migreerima kataloog lisati automaatselt ja schema.rb loodi pärast edukat migratsiooni. Praegu näeb meie projekti struktuur välja järgmiselt:

 puu
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── .gitignore
├── .env.example
├─ app
│ └─ application.rb
├── db
│ ├─ config.yml
│ ├─ migrate
│ │ └── 20210504135128_create_posts.rb
│ └─ schema.rb
└── docker-compose.yml

Aktiivne rekord

Viimane, kuid mitte vähem tähtis samm meie rakenduse loomisel on lisada activerecord ja selle konfiguratsioon. Selleks peame uuendama oma Gemfile'i veel 3 pärliga:

pärl 'activerecord'
gem 'erb'
gem 'yaml'

Miks me lisame erb ja ymal selgitatakse allpool kommentaarides. Kogu active_record konfiguratsioon on app/application.rb faili.

Käime siin toimuva ükshaaval läbi:

# frozen_string_literal: true

# Kui soovime, et rakendust saaks käivitada erinevates keskkondades,
# nt test- või tootmisrakenduses, on hea määrata väärtus ENVIRONMENT.
# alguses, mis võetakse keskkonnamuutujast
# või `development` vaikimisi.

ENV['ENVIRONMENT'] ||= 'development'.

# Lisatud pärlite kasutamiseks tuleb need laadida, kasutades meetodit Kernel#require,
#, mis laeb parameetrina edastatud faili või raamatukogu.

require 'pg'
require 'active_record'
require 'dotenv'
require 'yaml'
require 'erb'

# Vaikimisi jõuab Dotenv.load keskkonnamuutujate laadimiseks välja
# faili `.env`, nii et kui me tahame kasutada teisi keskkondi, siis tasub
# laiendada seda alljärgnevale meetodile, mis kõigepealt komplekti arendamiseks
# keskkonda otsib faili, mis lõpeb `.env.development.local`,
# seejärel `.env.development` ja lõpuks `.env`.

Dotenv.load(".env.#{ENV.fetch('ENVIRONMENT')}.local", ".env.#{ENV.fetch('ENVIRONMENT')}", '.env')

# Andmebaasi seadete laadimiseks vajalik meetod
def db_configuration
  # Alljärgnev meetod tagastab meie konfiguratsiooni sisaldava faili tee.
  db_configuration_file_path = File.join(File.expand_path('..', __dir__), 'db', 'config.yml')

  # Võttes faili tee, saame lugeda selle väärtusi. Kuna config.yml
  # fail sisaldab keskkonnamuutujaid ja, nagu te ehk olete märganud,
  # erb  süntaksi, peame kasutama ka erb gemi. Ilma selleta,
  # ei loe muutujate väärtusi õigesti ja activerecord
  # ei suuda postgresiga ühendust luua. järgmine meetod tagastab
  # konfiguratsiooni stringina

  db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result

  # Kasutades eelnevalt lisatud `yaml` gemi, saame turvaliselt laadida meie konfiguratsiooni

  YAML.safe_load(db_configuration_result, aliases: true)
end

# Lõpuks peame looma ühenduse activerecordi ja postgres'i vahel
# kasutades meetodit `establish_connection`.
ActiveRecord::Base.establish_connection(db_configuration[ENV['ENVIRONMENT']])

moodul Application
  class Error < StandardError; end
  # Sinu kood läheb siia...
end

Meil on konfiguratsioonid juba olemas, seega saame lisada Posti mudeli meie rubiin app. 

`˛├── äpp`

`│ └─ └─ mudelid`

`│ └─ post.rb`
app/models/post.rb
# frozen_string_literal: true

class Post < ActiveRecord::Base;end

ja ärge unustage laadida faili application.rb

nõuda 'app/models/post'

Samuti ärge unustage lisada nõuda 'app/runner' aadressile app/application.rb

Kui me tahame lisada oma rakendusse uusi faile, teenuseid, rohkem mudeleid, peame need laadima sisse application.rb.

KOKKUVÕTE

Praegu on meie rubiinirakendus valmis jätkama. Oleme seadistanud:

  • andmebaasiühendus,
  • Aktiivne rekord,
  • Iseseisvad migratsioonid koos rake'iga

Nagu näete, ei ole alati vaja kasutada rööpad uued. Nii väldime oma rakenduses tarbetut koodi, mida ei kasutata. Meil on rohkem kontrolli meie rakenduse arendamise üle. Me saame aja jooksul lisada rohkem raamatukogusid ja äriloogikat. Me võime kasutada sellist konfigureeritud rakendust, et luua crawler või scraper, luua ühendus välise API-ga, kust me saame teavet ja salvestada oma andmebaasi või laadida faile ja võtta neist huvipakkuvat teavet. Soovin teile edu oma rakenduste edasisel arendamisel!

BONUS

Meie rakendus tuleb ka kuidagi käivitada. Seda saame teha mitmel viisil, näiteks terminalist. Me võime luua exe/rakendus faili, mis laadib meie rakendusloogika 'app/application' faili ja käivitada meie rakendus läbi Jooksja teenus on lisatud rakenduste kataloogi.

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'bundler/setup'

$LOAD_PATH.unshift File.expand_path('..', __dir__)
require 'app/application'

Runner.start
# frozen_string_literal: true

klass Runner
  def self.start
    puts 'Start'
  end
end
Ruby rakenduse arendamine

Ärge unustage ka lisada nõuda 'app/runner' aadressile app/application.rb

Kood on leitav GitHubist:

– https://github.com/dwatek/simplerubiinapp

Loe edasi

GraphQL Ruby. Kuidas on tulemuslikkus?

Rööpad ja muud transpordivahendid

Railsi arendamine TMUX, Vim, Fzf + Ripgrep abil

Seotud artiklid

Tarkvaraarendus

Tulevikukindlate veebirakenduste loomine: The Codest ekspertide meeskonna ülevaade

Avastage, kuidas The Codest paistab skaleeritavate, interaktiivsete veebirakenduste loomisel silma tipptehnoloogiatega, mis pakuvad sujuvat kasutajakogemust kõigil platvormidel. Saate teada, kuidas meie eksperditeadmised aitavad kaasa digitaalsele ümberkujundamisele ja äritegevusele...

THECODEST
Tarkvaraarendus

Top 10 Lätis asuvat tarkvaraarendusettevõtet

Tutvu Läti parimate tarkvaraarendusettevõtete ja nende innovaatiliste lahendustega meie viimases artiklis. Avastage, kuidas need tehnoloogiajuhid saavad aidata teie äri edendada.

thecodest
Enterprise & Scaleups lahendused

Java tarkvaraarenduse põhitõed: A Guide to Outsourcing Successfully

Tutvuge selle olulise juhendiga, kuidas edukalt outsourcing Java tarkvara arendada, et suurendada tõhusust, pääseda ligi eksperditeadmistele ja edendada projekti edu The Codest abil.

thecodest
Tarkvaraarendus

Ülim juhend Poola allhanke kohta

outsourcing kasv Poolas on tingitud majanduslikust, hariduslikust ja tehnoloogilisest arengust, mis soodustab IT kasvu ja ettevõtlussõbralikku kliimat.

TheCodest
Enterprise & Scaleups lahendused

Täielik juhend IT-auditi vahendite ja tehnikate kohta

IT-auditid tagavad turvalised, tõhusad ja nõuetele vastavad süsteemid. Lisateavet nende tähtsuse kohta leiate kogu artiklist.

The Codest
Jakub Jakubowicz CTO & kaasasutajad

Tellige meie teadmistebaas ja jääge kursis IT-sektori eksperditeadmistega.

    Meie kohta

    The Codest - rahvusvaheline tarkvaraarendusettevõte, mille tehnoloogiakeskused asuvad Poolas.

    Ühendkuningriik - peakorter

    • Büroo 303B, 182-184 High Street North E6 2JA
      London, Inglismaa

    Poola - kohalikud tehnoloogiakeskused

    • Fabryczna büroopark, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varssavi, Poola

      The Codest

    • Kodu
    • Meie kohta
    • Teenused
    • Case Studies
    • Tea kuidas
    • Karjäärivõimalused
    • Sõnastik

      Teenused

    • See nõuandev
    • Tarkvaraarendus
    • Backend arendus
    • Frontend arendus
    • Staff Augmentation
    • Backend arendajad
    • Pilveinsenerid
    • Andmeinsenerid
    • Muud
    • QA insenerid

      Ressursid

    • Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga
    • USAst Euroopasse: Miks otsustavad Ameerika idufirmad Euroopasse ümber asuda?
    • Tech Offshore arenduskeskuste võrdlus: Euroopa (Poola), ASEAN (Filipiinid), Euraasia (Türgi).
    • Millised on CTO ja CIOde peamised väljakutsed?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. Kõik õigused kaitstud.

    etEstonian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch elGreek etEstonian