This is an old revision of the document!
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.