Ruby on Rails Zelfstudie
Aan de slag met Ruby on Rails
Zoeken…
Opmerkingen
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 |
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:
rake db:create
# OR
rails db:create
rake db:create
Nu we de database hebben gemaakt, moeten we migraties uitvoeren om de tabellen in te stellen:
rake db:migrate
# OR
rails db:migrate
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
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 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.
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
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:
- maak eenvoudig uw app zonder actief record
$ rails app new MyApp --skip-active-record
- voeg uw eigen databasebeheersysteem toe in
Gemfile
gem 'mongoid', '~> 5.0'
-
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
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
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. Typruby 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".