Ruby on RailsAan de slag met Ruby on Rails


Opmerkingen

logo

Ruby on Rails (RoR), of Rails, is een open-source populair webtoepassingskader. Rails gebruikt Ruby, HTML, CSS en JavaScript om een webtoepassing te maken die op een webserver draait. Rails gebruikt het model-view-controller (MVC) -patroon en biedt een volledige stapel bibliotheken van de database tot aan de weergave.

versies

Versie Publicatiedatum
5.1.2 2017/06/26
5.0 2016/06/30
4.2 2014/12/19
4.1 2014/04/08
4.0 2013/06/25
3.2 2012-01-20
3.1 2011-08-31
3.0 2010-08-29
2.3 2009-03-16
2.0 2007-12-07
1.2 2007-01-19
1.1 2006-03-28
1.0 2005-12-13

Maak een nieuwe Rails-app met een niet-standaarddatabase-adapter

Rails wordt standaard verzonden met ActiveRecord , een ORM (Object Relational Mapping) afgeleid van het patroon met dezelfde naam .

Als ORM is het gebouwd om relationele kaarten te verwerken, en meer bepaald door SQL-aanvragen voor u af te handelen, vandaar de beperking tot alleen SQL-databases.

U kunt echter nog steeds een Rails-app maken met een ander databasebeheersysteem:

  1. maak eenvoudig uw app zonder actief record
$ rails app new MyApp --skip-active-record
 
  1. voeg uw eigen databasebeheersysteem toe in Gemfile
gem 'mongoid', '~> 5.0'
 
  1. bundle install en volg de installatiestappen van de gewenste database.

In dit voorbeeld is mongoid een objecttoewijzing voor MongoDB en - zoals vele andere database-edelstenen die voor rails zijn gebouwd - neemt het ook van ActiveModel dezelfde manier als ActiveRecord , dat een gemeenschappelijke interface biedt voor veel functies zoals validaties, callbacks, vertalingen, enz. .

Andere database-adapters omvatten, maar zijn niet beperkt tot:

  • DataMapper

  • vervolg-rails

Maak een nieuwe Rails-app met uw database naar keuze en inclusief de RSpec-testtool

Rails gebruikt sqlite3 als standaarddatabase, maar u kunt een nieuwe railtoepassing genereren met een database naar keuze. Voeg gewoon de optie -d , gevolgd door de naam van de database.

$ rails new MyApp -T -d postgresql
 

Dit is een (niet-limitatieve) lijst met beschikbare database-opties:

  • mysql
  • orakel
  • postgresql
  • sqlite3
  • FrontBase
  • ibm_db
  • sqlserver
  • jdbcmysql
  • jdbcsqlite3
  • jdbcpostgresql
  • jdbc

De opdracht -T geeft aan dat de installatie van minitest moet worden overgeslagen. Om een alternatief testpakket zoals RSpec te installeren, moet u de Gemfile bewerken en toevoegen

group :development, :test do
  gem 'rspec-rails', 
end
 

Start vervolgens de volgende opdracht vanaf de console:

rails generate rspec:install
 

Een Ruby on Rails-toepassing maken

In dit voorbeeld wordt ervan uitgegaan dat Ruby en Ruby on Rails al correct zijn geïnstalleerd. Zo niet, dan kunt u vinden hoe dit te doen hier .

Open een opdrachtregel of terminal. Gebruik de opdracht rails new gevolgd door de naam van uw applicatie om een nieuwe rails-applicatie te genereren:

$ rails new my_app
 

Als u uw Rails-toepassing met een specifieke Rails-versie wilt maken, kunt u deze opgeven bij het genereren van de toepassing. Gebruik hiervoor rails _version_ new gevolgd door de toepassingsnaam:

$ rails _4.2.0_ new my_app 
 

Dit zal een Rails-applicatie maken met de naam MyApp in een my_app directory en de gem-afhankelijkheden installeren die al in Gemfile worden genoemd met behulp van bundle install .

Gebruik de cd opdracht om te schakelen naar de map van uw nieuwe app, wat staat voor change directory .

$ cd my_app
 

De map my_app heeft een aantal automatisch gegenereerde bestanden en mappen die de structuur van een Rails-toepassing vormen. Hieronder volgt een lijst met bestanden en mappen die standaard worden gemaakt:

Bestandsmap Doel
app / Bevat de controllers, modellen, views, helpers, mailers en middelen voor uw applicatie.
bin / Bevat het rails-script dat uw app start en kan andere scripts bevatten die u gebruikt om uw applicatie in te stellen, bij te werken, te implementeren of uit te voeren.
config / Configureer de routes, database en meer van uw applicatie.
config.ru Rackconfiguratie voor op rack gebaseerde servers die worden gebruikt om de toepassing te starten.
db / Bevat uw huidige databaseschema, evenals de databasemigraties.
Gemfile Gemfile.lock Met deze bestanden kunt u opgeven welke edelsteenafhankelijkheden nodig zijn voor uw Rails-toepassing. Deze bestanden worden gebruikt door de Bundler-edelsteen.
lib / Uitgebreide modules voor uw toepassing.
log / Applicatie logbestanden.
openbaar/ De enige map die door de wereld wordt gezien zoals hij is. Bevat statische bestanden en gecompileerde activa.
Rakefile Dit bestand zoekt en laadt taken die vanaf de opdrachtregel kunnen worden uitgevoerd. De taakdefinities worden gedefinieerd in alle componenten van Rails.
README.md Dit is een korte handleiding voor uw toepassing. U moet dit bestand bewerken om anderen te vertellen wat uw applicatie doet, hoe het in te stellen enz
test/ Eenheidstests, armaturen en andere testapparatuur.
temp / Tijdelijke bestanden (zoals cache- en pid-bestanden).
verkoper/ Een plaats voor alle code van derden. In een typische Rails-toepassing omvat dit ook edelstenen met verkopers.

Nu moet u een database maken van uw database.yml bestand:

5.0
rake db:create
# OR
rails db:create
 
5.0
rake db:create
 

Nu we de database hebben gemaakt, moeten we migraties uitvoeren om de tabellen in te stellen:

5.0
rake db:migrate
# OR
rails db:migrate
 
5.0
rake db:migrate
 

Om de applicatie te starten, moeten we de server opstarten:

$ rails server
# OR
$ rails s
 

Standaard starten rails de toepassing op poort 3000. Om de toepassing met een ander poortnummer te starten, moeten we de server opstarten,

$ rails s -p 3010
 

Als u in uw browser naar http: // localhost: 3000 navigeert, ziet u een welkomstpagina van Rails waarin wordt aangegeven dat uw toepassing nu wordt uitgevoerd.

Als er een fout optreedt, kunnen er verschillende mogelijke problemen zijn:

  • Er is een probleem met config/database.yml
  • U hebt afhankelijkheden in uw Gemfile die niet zijn geïnstalleerd.
  • U heeft migraties in behandeling. Run rails db:migrate
  • In het geval u naar de vorige migratierails rails db:rollback

Als er nog steeds een fout optreedt, moet u uw config/database.yml

Rails-API's maken in JSON

In dit voorbeeld wordt ervan uitgegaan dat u ervaring hebt met het maken van Rails-toepassingen.

Als u een app met alleen API in Rails 5 wilt maken, voert u uit

rails new name-of-app --api
 

Voeg active_model_serializers toe aan Gemfile

gem 'active_model_serializers'
 

bundel installeren in terminal

bundle install
 

Stel de ActiveModelSerializer adapter in om te gebruiken :json_api

# config/initializers/active_model_serializer.rb
ActiveModelSerializers.config.adapter = :json_api
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest application/vnd.api+json )
 

Genereer een nieuwe steiger voor uw resource

rails generate scaffold Task name:string description:text
 

Dit genereert de volgende bestanden:

Controller: app / controllers / taken_controller.rb

Test:       test/models/task_test.rb
            test/controllers/tasks_controller_test.rb
Routes:     resources :tasks added in routes.rb
Migration:  db/migrate/_create_tasks.rb
Model:      app/models/task.rb
Serializer: app/serializers/task_serializer.rb
Controller: app/controllers/tasks_controller.rb
 

Genereer een bron met steigers

Van guides.rubyonrails.org:

In plaats van rechtstreeks een model te genereren. . . laten we een steiger opzetten. Een scaffold in Rails is een volledige set van modellen, databasemigratie voor dat model, controller om het te manipuleren, weergaven om de gegevens te bekijken en te manipuleren, en een testpakket voor elk van de bovenstaande.

Hier is een voorbeeld van het ondersteunen van een bron met de naam Task met een tekenreeksnaam en een tekstbeschrijving:

rails generate scaffold Task name:string description:text
 

Dit genereert de volgende bestanden:

Controller: app/controllers/tasks_controller.rb
Test:       test/models/task_test.rb
            test/controllers/tasks_controller_test.rb
Routes:     resources :tasks added in routes.rb
Views:      app/views/tasks
            app/views/tasks/index.html.erb
            app/views/tasks/edit.html.erb
            app/views/tasks/show.html.erb
            app/views/tasks/new.html.erb
            app/views/tasks/_form.html.erb
Helper:     app/helpers/tasks_helper.rb
JS:         app/assets/javascripts/tasks.coffee 
CSS:        app/assets/stylesheets/tasks.scss
            app/assets/stylesheets/scaffolds.scss
 

bijvoorbeeld om bestanden te verwijderen die door scaffold zijn gegenereerd voor de bron Task

rails destroy scaffold Task
 

Een controller genereren

Om een controller te genereren (bijvoorbeeld Posts ), navigeert u naar uw projectmap vanaf een opdrachtregel of terminal en voert u het volgende uit:

$ rails generate controller Posts
 

U kunt deze code inkorten door generate vervangen door g , bijvoorbeeld:

$ rails g controller Posts
 

Als u de nieuw gegenereerde app / controllers / posts_controller.rb opent , ziet u een controller zonder acties:

class PostsController < ApplicationController
    # empty
end
 

Het is mogelijk om standaardmethoden voor de controller te maken door argumenten voor de controller-naam door te geven.

$ rails g controller ControllerName method1 method2
 

Om een controller binnen een module te maken, geeft u de controllernaam op als een pad zoals parent_module/controller_name . Bijvoorbeeld:

$ rails generate controller CreditCards open debit credit close
# OR
$ rails g controller CreditCards open debit credit close
 

Dit genereert de volgende bestanden:

Controller: app/controllers/credit_cards_controller.rb
Test:       test/controllers/credit_cards_controller_test.rb
Views:      app/views/credit_cards/debit.html.erb [...etc]
Helper:     app/helpers/credit_cards_helper.rb
 

Een controller is gewoon een klasse die is gedefinieerd om te erven van ApplicationController .

Het is in deze klasse dat je methoden definieert die de acties voor deze controller worden.

Rails installeren

Rails installeren op Ubuntu

Op een schone ubuntu moet de installatie van rails eenvoudig zijn

Ubuntu-pakketten upgraden

sudo apt-get update
sudo apt-get upgrade
 

Installeer afhankelijkheden van Ruby en Rails

sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev
 

Ruby-versiemanager installeren. In dit geval gebruikt u rbenv eenvoudig

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
 

Ruby Build installeren

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
 

Start Shell opnieuw

exec $SHELL
 

Ruby installeren

rbenv install 2.3.1
rbenv global 2.3.1
rbenv rehash
 

Rails installeren

gem install rails
 

Rails installeren op Windows

Stap 1: Ruby installeren

We moeten Ruby-programmeertaal geïnstalleerd hebben. We kunnen een vooraf gecompileerde versie van Ruby gebruiken, genaamd RubyInstaller.

  • Download en voer Ruby Installer uit van rubyinstaller.org .
  • Voer het installatieprogramma uit. Vink "Ruby-uitvoerbare bestanden toevoegen aan uw PATH" aan en installeer het.
  • Om toegang te krijgen tot Ruby, gaat u naar het Windows-menu, klikt u op Alle programma's, bladert u naar Ruby en klikt u op "Start opdrachtprompt met Ruby". Een opdrachtprompterminal wordt geopend. Als u ruby -v typt en op Enter drukt, zou u het Ruby-versienummer moeten zien dat u hebt geïnstalleerd.

Stap 2: Ruby Development Kit

Na de installatie van Ruby kunnen we proberen Rails te installeren. Maar sommige bibliotheken van Rails zijn afhankelijk van een aantal build-tools om te kunnen worden gecompileerd, en Windows heeft die tools standaard niet. U kunt dit identificeren als u een fout ziet terwijl u probeert Rails Gem::InstallError: The '[gem name]' native gem requires installed build tools. te installeren Gem::InstallError: The '[gem name]' native gem requires installed build tools. Om dit op te lossen, moeten we de Ruby Development Kit installeren.

  • Download de DevKit
  • Voer het installatieprogramma uit.
  • We moeten een map opgeven waarin we de DevKit permanent gaan installeren. Ik raad aan om het in de root van je harde schijf te installeren, op C:\RubyDevKit . (Gebruik geen spaties in de mapnaam.)

Nu moeten we de DevKit-tools beschikbaar maken voor Ruby.

  • Ga in uw opdrachtprompt naar de DevKit-directory. cd C:\RubyDevKit of de map waarin u het hebt geïnstalleerd.
  • We moeten een Ruby-script uitvoeren om de DevKit-installatie te initialiseren. Typ ruby dk.rb init . Nu vertellen we hetzelfde script om de DevKit toe te voegen aan onze Ruby-installatie. Typ ruby dk.rb install .

De DevKit zou nu beschikbaar moeten zijn voor uw Ruby-tools om te gebruiken bij het installeren van nieuwe bibliotheken.

Stap 3: Rails

Nu kunnen we Rails installeren. Rails komt als een robijn juweeltje. Typ in uw opdrachtprompt:

gem install rails

Zodra u op Enter drukt, downloadt en installeert het gem die versie van de edelstenen van Rails, samen met alle andere edelstenen waarvan Rails afhankelijk is.

Stap 4: Node.js

Voor sommige bibliotheken waarvan Rails afhankelijk is, moet een JavaScript-runtime zijn geïnstalleerd. Laten we Node.js installeren zodat die bibliotheken correct werken.

  • Download het installatieprogramma van Node.js hier .
  • Wanneer de download is voltooid, gaat u naar uw map met downloads en voert u het installatieprogramma van node-v4.4.7.pkg .
  • Lees de volledige licentieovereenkomst, accepteer de voorwaarden en klik door de rest van de wizard op Volgende, waarbij alles standaard blijft.
  • Er kan een venster verschijnen met de vraag of u wilt dat de app wijzigingen op uw computer aanbrengt. Klik op "Ja".
  • Wanneer de installatie is voltooid, moet u uw computer opnieuw opstarten zodat Rails toegang heeft tot Node.js.

Vergeet niet om naar het Windows-menu te gaan zodra uw computer opnieuw is opgestart, klik op "Alle programma's", scrol omlaag naar Ruby en klik op "Start opdrachtprompt met Ruby".