Veel gestelde vragen

De antwoorden

Hoe benader ik het Plesk control panel?

U kunt het Plesk control panel gebruiken om uw databases en e-mail accounts te beheren. U benadert dit control panel via de volgende URL:

https://<uw-domeinnaam>:8443/

Let op: De logingegevens voor het Plesk panel zijn niet de gegevens die u voor FTP of SSH gebruikt!

Hoe herstart ik mijn applicatie?

Een Passenger applicatie kunt u herstarten door in de rails/tmp directory een bestand aan te maken met de naam restart.txt. Bij het volgende request zal de applicatie herstart worden.

Via SSH kunt u dit bestand aanmaken met het volgende commando:

touch ~/rails/tmp/restart.txt

Of, als u Capistrano gebruikt:

touch ~/rails/current/tmp/restart.txt

Waar moet ik mijn applicatie uploaden?

De bestanden van de complete Ruby on Rails applicatie moeten in de map "rails" worden geplaatst. De webserver heeft als http root de map ~/rails/public. Bij een Capistrano configuratie is dit ~/rails/current/public.

Hoe gebruik ik Capistrano?

Configureren van Capistrano

Om Capistrano te gebruiken is het van belang dat uw account hiervoor ingericht is. Indien uw account nog niet ingericht is voor Capistrano kunt u hiervoor een verzoek bij ons indienen.

Op onze recente servers en VPSsen wordt een system-brede RVM installatie gebruikt voor de Ruby omgeving. Hieronder vindt u een voorbeeld deploy.rb die u kunt gebruiken op onze servers, die gebruik maakt van RVM en Capistrano:

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
require 'bundler/capistrano'

# Indien u geen RVM gebruikt op uw system kunt u het onderstaande bestand
# downloaden op: https://github.com/wayneeseguin/rvm/blob/master/lib/rvm/capistrano.rb
# Plaats dit in uw applicatie en pas de onderstaande require regel aan.
require 'rvm/capistrano'

# De naam van uw applicatie
set :application, "applicatie"

# Gegevens van de Bluerail server
set :host, "server.bluerail.nl"
set :user, "gebruikersnaam"

# Versiebeheer instellingen
set :scm, :git  # Of 'subversion', 'mercurial' , etc.
set :repository,  "git@repository:applicatie"

# De te gebruiken RVM versie, default is 1.8.7. Indien u een Thin installatie
# met Ruby 1.9.2 heeft dan kunt u '1.9.2' als versie opgeven.
set :rvm_ruby_string, 'default'

# De onderstaande instellingen zijn specifiek voor de Bluerail servers, u
# hoeft hier zelf geen wijzigingen in aan te brengen.
set :deploy_to, "~/rails"
set :rvm_type, :system
set :rvm_bin_path, '/usr/local/rvm/bin'
set :use_sudo, false
set :keep_releases, 3

role :web, host
role :app, host
role :db,  host, :primary => true

# Taak voor het herstarten van de Passenger applicatie en symlinken van de database.yml
namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end

  after "deploy:update_code", :link_production_db
end

desc "Link database.yml from shared path"
task :link_production_db do
  run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
end

De belangrijkste Capistrano commando's op een rij

Met Capistrano hoeft u nooit zelf een verbinding te maken met de Bluerail servers om uw applicatie te updaten. U voert alle commando's uit vanuit de lokale kopie van uw Rails applicatie. Hieronder vindt u een kort overzicht van de belangrijkste commando's:

cap deploy:setup
Met dit commando maakt u de benodigde directorystructuur voor Capistrano op de server aan. Dit commando dient altijd uitgevoerd te worden bij het in gebruik nemen van een nieuw hosting account.
cap deploy
Om nieuwe versies op de server uit te rollen volstaat het cap deploy commando. Indien u de bovenstaande config.rb gebruikt wordt tevens automatisch de bundle bijgewerkt.
cap deploy:migrations
Deze taak installeert niet alleen een nieuwe versie van de applicatie maar voert tevens de databasemigraties uit.
cap deploy:rollback
Mocht een deployment onverwacht tot problemen leiden, dan kunt u met rollback terug naar de vorige release.
cap deploy:cleanup
Als een deployment succesvol is verlopen kunt u met cap deploy:cleanup oude releases van de applicatie van de server verwijderen om zo schijfruimte te besparen. Het aantal versies dat bewaard wordt kunt u instellen met de :keep_releases optie in deploy.rb

Meer informatie vindt u op de Capistrano wiki op Github.

Hoe precompile ik assets bij het deployen van mijn Rails 3.1 app?

De Asset Pipeline in Rails 3.1 is een raamwerk om Javascript en CSS bestanden samen te voegen en te comprimeren. Wanneer u een Rails applicatie in productie start gaat deze er vanuit dat de assets van tevoren gecompileerd zijn. U kunt dit vanaf de commandline doen door middel van:

bundle exec rake assets:precompile

Indien u Capistrano gebruikt kunt u de volgende regel toevoegen aan uw Capfile:

load 'deploy/assets'

U dient tevens een JavaScript engine toe te voegen aan uw Gemfile. Op onze servers is therubyracer probleemloos te gebruiken. Deze voegt u als volgt toe aan uw Gemfile:

gem 'therubyracer'
gem 'execjs'

Het compilen van de assets kan lang duren: voor een lege Rails 3.1 app duurt dit in sommige gevallen al een minuut. Het kan dus zijn dat uw cap deploy langer duurt dan u gewend bent.

Capistrano foutmelding: Host key verification failed

Wanneer u voor het eerst een applicatie probeert te deployen vanuit een Git repository kunt u de bovenstaande foutmelding tegenkomen. Deze foutmelding treedt op op het moment dat Capistrano vanaf de Bluerail server een verbinding probeert te leggen met uw Git repository.

U kunt deze fout meestal verhelpen door via SSH een verbinding te leggen met de Bluerail server en vanaf daar een SSH verbinding te openen met uw Git repository. Mocht dit niet werken, dan kunt u handmatig een git clone van uw repository uitvoeren op onze server (bijvoorbeeld in de ~/private map). Nadat deze clone geslaagd is zou Capistrano ook moeten werken. U kunt de gemaakte clone dan weer verwijderen.

Access denied for user 'root'@'localhost' (using password: NO)

Standaard verwacht Ruby on Rails toegang te krijgen met de database door gebruik te maken van de gebruikersnaam 'root'. Bij het aanmaken van de database in Plesk kunt u een gebruikersnaam en wachtwoord opgeven.

Gebruik de gegevens van de aangemaakte database om de instellingen van de Rails applicatie te wijzigen in config/database.yml. Let hierbij op dat de gegevens worden ingevuld bij de juiste omgeving (development of production).

production:
  adapter: mysql2
  encoding: utf8
  database: <database>
  username: <gebruikersnaam>
  password: <wachtwoord>
  host: localhost
  

uninitialized constant MysqlCompat::MysqlRes

Deze foutmelding kan voorkomen indien u de bundle van uw ontwikkelmachine of een andere server overkopieert naar onze server, waardoor de native extensions niet geladen kunnen worden.

Dit probleem kan opgelost worden door de vendor/bundle map te legen en het bundle install commando opnieuw uit te voeren op de server.

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

Het correcte pad naar het MySQL socket op onze CentOS servers is /var/lib/mysql/mysql.sock. U kunt dit als volgt in uw database.yml opnemen:

production:
  socket: /var/lib/mysql/mysql.sock

Application error (Rails) / Something went wrong

De Application error (Rails) of, in nieuwere versies, something went wrong van Ruby on Rails is de tegenhanger van de gedetailleerde foutmeldingen. Deze foutmelding wordt standaard weergegeven als de applicatie in de productieomgeving staat.

De exacte fout is terug te vinden in de logbestanden (log/production.log). De inhoud van een logbestand kan via een SSH-verbinding eenvoudig worden weergegeven. Gebruiker hiervoor onderstaande code na het inloggen:

tail -f rails/log/production.log

Bezoek nu de pagina waarop de fout optreedt nogmaals. De gedetailleerde melding is dan te zien in het SSH-venster.

Routing error: Recognition failed for "/"

Het openen van de website faalt met de fout Routing Error: Recognition failed for "/". Deze fout geeft geeft twee dingen aan:

  • Er is geen enkele route in config/routes.rb die aangeeft wat de standaardpagina is
  • Er is geen index.html

Definieer de standaard te openen pagina in config/routes.rb met behulp van onderstaande code. Vul hierbij de controller en de actie met de gewenste combinatie.

root :to => "controller#actie"

Wat zijn de betaal- en opzeggingsvoorwaarden voor de pakketten?

U betaalt het pakket per drie maanden vooruit. De facturering verloopt standaard per e-mail. Indien u wilt opzeggen dient u dit schriftelijk te doen, minimaal een maand voor het einde van de betaalde termijn.

Op alle diensten zijn de algemene voorwaarden van LICO Innovations van toepassing.

Wat zijn de kosten voor extra dataverkeer?

Indien u met uw hosting pakket over de datalimiet gaat krijgt u een automatische melding van het control panel, mits u een correct e-mailadres hebt opgegeven in de instellingen.

Uw account wordt niet direct afgesloten bij het overschrijden van de datalimiet, wij proberen bij grote overschrijdingen altijd in overleg te doen. Indien u een (tijdelijke) verhoging van uw datatraffic verwacht verzoeken wij u dit van tevoren te melden. Extra dataverkeer dat niet van tevoren is opgegeven wordt in rekening gebracht tegen € 1 per gigabyte.

Aanwezige gems en overige software

Onze servers draaien op het FreeBSD of CentOS besturingssysteem met het Plesk control panel. Als webserver wordt Apache gebruikt, met onder andere PHP 5, mod_perl en mod_python. U kunt gebruik maken van Ruby 1.8.7 of 1.9.2 voor uw Rails applicatie.

Alle recente Rails versies zijn op de server beschikbaar. Verder zijn populaire gems als rmagick, gd2 en pdf-writer standaard aanwezig. Om gems te installeren kunt u gebruik maken van Bundler. Bundler is de standaard methode voor het bundelen van gems in Rails 3, die ook in oudere Rails applicaties of in Sinatra applicaties kan worden opgenomen.

U heeft via SSH de beschikking over Subversion, Git en Capistrano en verschillende veelgebruikte Unix tools als GNU Nano en Vim.

Hoe gebruik ik Bundler?

Bundler is op dit moment de aanbevolen manier om als Bluerail klant gems te installeren. Het geeft u volledige vrijheid en voorkomt versieconflicten tussen gems. Rails 3 applicaties maken standaard gebruik van Bundler en Rails 2.3 applicaties zijn gemakkelijk om te zetten.

Het Bluerail platform werkt zonder wijzigingen met Bundler. Voor een foutloze operatie is het wel van belang om de --deployment optie aan het bundle install commando mee te geven, als volgt:

bundle install --deployment

Op deze manier vraagt bundler niet om een sudo wachtwoord en worden de gems in de vendor/bundle map van uw applicatie geïnstalleerd.

Bundler bevat een module om te integreren met Capistrano. U kunt deze gebruiken door require 'bundler/capistrano' aan uw deploy toe te voegen. Zie ook onze uitleg over het gebruik van Capistrano.

U vindt meer informatie over Bundler op de officiële Bundler website.

Kan ik Radiant of Refinery CMS gebruiken bij Bluerail?

Zowel Radiant en Refinery zijn gebaseerd op Rails waardoor u deze applicaties zonder problemen kunt uitrollen op het Bluerail platform. Net als met Rails applicaties adviseren wij om Capistrano te gebruiken voor het uitrollen.

Refinery CMS website Radiant CMS website

E-mail instellingen voor Ruby on Rails applicaties (ActionMailer)

Standaard verbindt Rails 3 en later voor het verzenden van e-mail met SMTP naar localhost, met gebruik van SSL. Hierbij treedt echter een certificaatfout op waardoor het verzenden mislukt met de volgende melding:

OpenSSL::SSL::SSLError (hostname was not match with the server certificate)

Om dit te voorkomen kunt u kiezen om mail te verzenden via sendmail of met SMTP, maar dan zonder SSL. Het ontbreken van SSL is geen bezwaar omdat het een lokale verbinding betreft. U kunt een van de volgende configuraties in uw config/environments/production.rb opnemen:

Optie 1: Sendmail

config.action_mailer.delivery_method = :sendmail

Optie 2: SMTP

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  address: 'localhost',
  enable_starttls_auto: false,
  openssl_verify_mode: 'none'
}

Meer informatie over de configuratie opties van ActionMailer vindt u in De ActionMailer documentatie.

E-mail instellingen voor mailprogramma's (IMAP, POP3, SMTP)

U kunt via het Plesk control panel zelf mail accounts aanmaken voor uw hosting account. Hieronder vindt u de instellingen voor uw mailprogramma. Indien gewenst kunt u gebruik maken van een beveiligde verbinding (SSL/TLS). Dan is het wel wraadzaam om inplaats van uw domeinnaam de naam van de Bluerail server te gebruiken (b.v. barney.bluerail.nl). Op die manier voorkomt u waarschuwingen met betrekking tot het certificaat dat de server meestuurt.

Inkomende mail

Protocol
IMAP4 of POP3
Servernaam
Uw domeinnaam of de Bluerail/LICO servernaam
Poort
143 (IMAP4) of 110 (POP3)
Gebruikersnaam
Het volledige e-mail adres
Wachtwoord
Het in Plesk ingestelde wachtwoord

Uitgaande mail

Protocol
SMTP / SMTPS
Servernaam
Uw domeinnaam of de Bluerail/LICO servernaam
Poort
25* / 465
Aanmelden met wachtwoord
Ja (dit is verplicht)
Gebruikersnaam
Het volledige e-mail adres
Wachtwoord
Het in Plesk ingestelde wachtwoord

* Niet alle providers laten uitgaande verbindingen naar poort 25 toe. In dat geval kunt u poort 465 gebruiken.

U kunt ook de uitgaande mailserver van uw internet(toegangs)provider gebruiken om mail te sturen vanaf het domein van uw Bluerail account.

Fout bij installeren van de sqlite3 gem

Indien u via Bundler de sqlite3 gem probeert te installeren kunt u de volgende foutmelding krijgen:

Installing sqlite3 (1.3.3) with native extensions … ERROR: Failed to build gem native extension

De reden hiervoor is dat de sqlite3 versie die bij het besturingssysteem van onze servers wordt geleverd (CentOS Linux) niet geschikt is voor de nieuwste sqlite3 gem. Er zijn twee oplossingen mogelijk:

  • Als u geen sqlite3 in productie gebruikt zet u de sqlite3 gem in uw Gemfile in de development groep. Vervolgens voert u bundler uit als volgt: bundle install --deployment --without=development.
  • Als u toch sqlite3 wilt gebruiken dan gebruikt u versie 1.2.5 van de sqlite gem. U kunt deze versie als volgt opgeven in uw Gemfile: gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'.

Wij bevelen overigens altijd het gebruik van MySQL en PostgreSQL aan in productieomgevingen. Over het algemeen zal uw Rails applicatie zonder problemen op een van deze databases werken, ook als u sqlite3 gebruikt tijdens de ontwikkeling.

Nuttige Ruby on Rails documentatie

Onze favoriete on-line naslagwerken op een rijtje:

  • Ruby on Rails Guides (guides.rubyonrails.org)
    Een compacte up-to-date gids om snel productief te worden met Rails. Een must-read voor elke Rails ontwikkelaar.
  • Rails Framework Documentation (api.rubyonrails.org)
    Complete API documentatie van het Rails framework.
  • Rails Searchable API Doc (railsapi.com)
    Eenvoudig te doorzoeken versie van de Rails API documentatie. Ook te downloaden.
  • Ruby Core API (ruby-doc.org)
    Compleet naslagwerk voor alle standaard Ruby objecten.
  • Ruby Standard Library (ruby-doc.org)
    De documentatie voor alle standaard Ruby libraries zoals YAML en REXML.
  • Stack Overflow
    Stack Overflow is een vraag- en antwoordpagina met een levendige Ruby en Ruby on Rails gebruikersgroep.
  • #rubyonrails op Freenode IRC
    In #rubyonrails kunt u andere gebruikers helpen met Rails vraagstukken en tevens zelf geholpen worden. Er zijn ook regelmatig Bluerail medewerkers in dit kanaal te vinden.

Verzending van e-mail testen met de Post Office gem

Op de Bluerail servers kunt u gebruik maken van de lokale SMTP server of sendmail binary voor het testen van de e-mail functionaliteit van uw applicatie. Tijdens de ontwikkeling is het testen van mail soms lastiger, zeker als u op verschillende locaties werkt.

Als oplossing voor dit probleem ontwikkelden wij de PostOffice gem. PostOffice bestaat uit een eenvoudige SMTP en POP3 server. U kunt vanuit uw Rails applicatie mail aanbieden bij de SMTP server die u vervolgens met uw favoriete mailclient op kunt halen om het resultaat te bereiken. Doordat alles zich lokaal op uw computer bevindt werkt dit razendsnel.

Bekijk de PostOffice gem op Github. Pull requests voor bugfixes en nieuwe features zijn welkom!