Aanleveren van een Ruby-on-Rails applicatie

Applicaties kunt u zelf plaatsen door ze op de upload-server in de juiste web-app directory neer te zetten. Het is ook mogelijk dit door NPO ICT te laten doen. Wij gaan er dan vanuit dat er 1 complete tar file aangeleverd wordt (bv dmv een url waarvan wij de tar file kunnen downloaden). Vervolgens zullen wij de tar file plaatsen. Wij verwachten dat naast de tar file installatie instructies aangeleverd worden.

Het configureren van de passenger/apache-server wordt altijd door NPO ICT gedaan. Idem voor frontproxy en databases.

Het configureren van de applicatie zal meestal in samenspraak tussen NPO ICT en de sitebouwer gebeuren. Zaken waar NPO ICT zich mee bemoeit zijn:

  • Database parameters config/database.yml;

de database wordt door NPO ICT aangemaakt. login namen en database passwords zijn daar eventueel op te vragen) U kunt deze file eenvoudig gebruiken door een symlink te maken, voor applicatie X

ln -sfn /e/ap/X/config/database.yml /e/ap/X/rails/config/database.yml
  • Applicatie logfiles;

Een railsapplicatie X logt onder /e/ap/X/log de bestanden hierin worden boven de 10MB getrunceerd, gelieve hier dus met beleid naar toe te loggen, gebruik liever de apache error-log.

Met een symbolic link vanuit de root van de railsapplicatie is dit te realiseren. In rails-2 zelf kunt u dit doen in bijv. environment.rb:

DEPLOY_PATH = '/e/ap/X'
config.log_path = "#{DEPLOY_PATH}/log/#{`id -un`.chomp}-#{RAILS_ENV}.log"

in rails-3

DEPLOY_PATH = '/e/ap/X'
config.logger = Logger.new("#{DEPLOY_PATH}/log/#{`id -un`.chomp}-#{Rails.env}.log")
config.logger.level = Logger::WARN

of, als alternatief via de apache error-log

config.logger = Logger.new(STDERR)
config.logger.level = Logger::WARN
  • tmpdir;

De rails tmpdir van een applicatie X wordt geacht te zijn /e/ap/X/tmp ook hier kan een symbolic link diensten bewijzen. In rails zelf kunt u dit doen voor bijv. sessions in environment.rb:

ActionController::Base.session_options[:tmpdir] = "#{DEPLOY_PATH}/tmp/sessions/"
  • gems;

Binaire (gecompileerde) gems willen wij graag compileren om makkelijk software en OS upgrades uit te kunnen voeren. Overige gems worden geacht in de applicatie 'gefreezed' of als 'gem' geinstalleerd te worden.

Bij initiële oplevering plaatst NPO ICT een lege rails applicatie van een willekeurige versie om een werkende set-up te kunnen tonen. Deze kunt u uiteraard naar believen overschrijven of verwijderen.

Per applicatie wordt een bijbehorende ruby 'binary' opgeleverd Voor een applicatie X is dat

/e/ap/X/bin/ruby

deze sourced z'n environment variablen uit:

/e/ap/X/bin/env

Voor elke applicatie wordt een plekje gereserveerd om door u zelf geïnstalleerde gems in op te slaan

/e/ap/X/rails/lib

Zo maak je je eigen gem repository:

source /e/ap/X/rails/bin/env
gem install --no-rdoc --no-ri -E mygem-0.0.gem
gem list

Het herstarten van passenger kunt u zelf veroorzaken door een touch van /e/ap/X/rails/current/config/restart.txt uit te voeren.

Passenger instanties draaien in principe in 'production' mode.

Een potentieel deploy-script inclusief bundler:

after 'deploy:finalize_update', 'deploy:bundle'

namespace :deploy do
  desc "NPO Bundler magic"
    task :bundle, :roles => :app do
        run "cd #{release_path} && bundle --quiet --without development test"
  end
end

Voor bundler is het ook -erg- belangrijk om bestaande .bundle/config files weg te halen.

  • sterretje-cluster/appcluster-hosting_ruby-on-rails.txt
  • Last modified: 2019/05/28 10:47
  • (external edit)