Class: Conjure::Service::RailsServer
- Inherits:
-
Object
- Object
- Conjure::Service::RailsServer
- Defined in:
- lib/conjure/service/rails_server.rb
Instance Method Summary collapse
- #apt_packages_required_for_gems ⇒ Object
- #base_image ⇒ Object
- #database_exists ⇒ Object
-
#initialize(target, rails_environment) ⇒ RailsServer
constructor
A new instance of RailsServer.
- #initialize_database ⇒ Object
- #install_gems ⇒ Object
- #migrate_database ⇒ Object
- #restart_server ⇒ Object
- #ruby_version ⇒ Object
- #run ⇒ Object
- #server_image ⇒ Object
- #update_database ⇒ Object
Constructor Details
#initialize(target, rails_environment) ⇒ RailsServer
Returns a new instance of RailsServer.
4 5 6 7 |
# File 'lib/conjure/service/rails_server.rb', line 4 def initialize(target, rails_environment) @target = target @rails_environment = rails_environment end |
Instance Method Details
#apt_packages_required_for_gems ⇒ Object
86 87 88 |
# File 'lib/conjure/service/rails_server.rb', line 86 def apt_packages_required_for_gems ["libpq-dev", "libmysqlclient-dev"] end |
#base_image ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/conjure/service/rails_server.rb', line 9 def base_image @base_image ||= @target.shell.prepare( label: "rails_base", setup_commands: [ "apt-get install -y curl git", "curl -L https://get.rvm.io | bash -s stable", "/usr/local/rvm/bin/rvm install #{ruby_version}", "ln -s /usr/local/rvm/rubies/* /usr/local/rvm/default-ruby", "bash -c 'source /usr/local/rvm/scripts/rvm; rvm use #{ruby_version}@global --default'", "ln -s /usr/local/rvm/rubies/*/lib/ruby/gems/* /usr/local/rvm/gems/default", "apt-get install -y #{apt_packages_required_for_gems.join ' '}", "echo 'deb http://us.archive.ubuntu.com/ubuntu/ precise universe' >>/etc/apt/sources.list", "apt-get install -y python-software-properties software-properties-common", "add-apt-repository -y ppa:chris-lea/node.js-legacy", "apt-get update", "apt-get install -y nodejs", ], environment: { PATH:"/usr/local/rvm/gems/default/bin:/usr/local/rvm/default-ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", RAILS_ENV: @rails_environment, GITHUB_TOKEN: ENV["GITHUB_TOKEN"], FRECKLE_SUBDOMAIN: "neomind", }, host_volumes: {"/rails_app" => "/application_root"}, ) end |
#database_exists ⇒ Object
62 63 64 65 |
# File 'lib/conjure/service/rails_server.rb', line 62 def database_exists Log.info "[ rails] Checking the database status" base_image.command("cd application_root; bundle exec rake db:version; true").include? "Current version:" end |
#initialize_database ⇒ Object
72 73 74 75 |
# File 'lib/conjure/service/rails_server.rb', line 72 def initialize_database Log.info "[ rails] Setting up the database" base_image.command "cd application_root; bundle exec rake db:setup" end |
#install_gems ⇒ Object
53 54 55 56 |
# File 'lib/conjure/service/rails_server.rb', line 53 def install_gems Log.info "[ rails] Installing gems" base_image.command "cd application_root; bundle --deployment" end |
#migrate_database ⇒ Object
67 68 69 70 |
# File 'lib/conjure/service/rails_server.rb', line 67 def migrate_database Log.info "[ rails] Migrating the database" base_image.command "cd application_root; bundle exec rake db:migrate" end |
#restart_server ⇒ Object
77 78 79 80 |
# File 'lib/conjure/service/rails_server.rb', line 77 def restart_server server_image.stop server_image.run "cd application_root; rm -f tmp/pids/server.pid; bundle exec rails server -p 80" end |
#ruby_version ⇒ Object
82 83 84 |
# File 'lib/conjure/service/rails_server.rb', line 82 def ruby_version Conjure.config.file_contents("../.ruby-version").strip end |
#run ⇒ Object
47 48 49 50 51 |
# File 'lib/conjure/service/rails_server.rb', line 47 def run install_gems update_database restart_server end |
#server_image ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/conjure/service/rails_server.rb', line 37 def server_image @server_image ||= base_image.prepare( label: "rails_server", ports: [80], environment: { PATH:"/usr/local/rvm/gems/default/bin:/usr/local/rvm/default-ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", }, ) end |
#update_database ⇒ Object
58 59 60 |
# File 'lib/conjure/service/rails_server.rb', line 58 def update_database database_exists ? migrate_database : initialize_database end |