ruby-on-rails – 在我的’生产’服务器上运行时,Bundler无视MyS
我正在尝试使用Capistrano在我的生产服务器上安装’
mysql2’gem.
我想在开发中使用SQLite,在生产中使用MySQL. 我在Windows 7机器上开发,生产使用Ubuntu. 当我在我的开发机器上运行bundle install时,它会安装MySQL2. 当Capistrano在我的生产机器上运行它时,它甚至在输出中都没有提到. 当我直接在shell上的生产机器上运行相同的命令时,它也没有提到gem. 我也发现了宝石’therubyracer’,:platforms => :没有安装ruby.我在mysql2条目之后添加了这个.我希望这两者是相关的.在添加therubyracer之前,mysql2无法正常工作. 由于以上所有原因,我在尝试查看我的网站时收到以下错误:
附加信息 我希望下面包含的信息量比痛苦更有用. 的Gemfile 我很欣赏我可以将mysql2置于’生产’中,但这不起作用. source 'http://rubygems.org' gem 'rails','3.1.1' gem 'nokogiri' gem 'bcrypt-ruby' gem 'faker' gem 'will_paginate' gem 'capistrano' gem 'capistrano-ext' gem 'mysql2',"~> 0.3" gem 'therubyracer',:platforms => :ruby gem 'sqlite3' # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails','~> 3.1.4' gem 'coffee-rails','~> 3.1.1' gem 'uglifier','>= 1.0.3' end gem 'jquery-rails' group :test do # Pretty printed test output gem 'turn',:require => false end 输出Capistrano Bundle Install命令 * executing "cd /home/gannicott.co.uk/production/listen/www/releases/20120223225131 && bundle install --gemfile /home/gannicott.co.uk/prod uction/listen/www/releases/20120223225131/Gemfile --path /home/gannicott.co.uk/production/listen/www/shared/bundle --deployment --without de velopment test" servers: ["homer.gannicott.co.uk"] [homer.gannicott.co.uk] executing command [homer.gannicott.co.uk] sh -c 'cd /home/gannicott.co.uk/production/listen/www/releases/20120223225131 && bundle install --gemfile /home/ gannicott.co.uk/production/listen/www/releases/20120223225131/Gemfile --path /home/gannicott.co.uk/production/listen/www/shared/bundle --dep loyment --without development test' ** [out :: homer.gannicott.co.uk] Installing rake (0.9.2.2) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing multi_json (1.1.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing activesupport (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing builder (3.0.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing i18n (0.6.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing activemodel (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing erubis (2.7.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rack (1.3.6) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rack-cache (1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rack-mount (0.8.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rack-test (0.6.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing hike (1.2.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing tilt (1.3.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing sprockets (2.0.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing actionpack (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing mime-types (1.17.2) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing polyglot (0.3.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing treetop (1.4.10) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing mail (2.3.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing actionmailer (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing arel (2.2.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing tzinfo (0.3.31) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing activerecord (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing activeresource (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing highline (1.6.11) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing net-ssh (2.3.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing net-scp (1.0.4) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing net-sftp (2.0.5) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing net-ssh-gateway (1.1.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing capistrano (2.11.2) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing capistrano-ext (1.2.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing coffee-script-source (1.2.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing execjs (1.3.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing coffee-script (2.2.0) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rack-ssl (1.3.2) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing json (1.6.5) ** [out :: homer.gannicott.co.uk] with native extensions ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rdoc (3.12) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing thor (0.14.6) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing railties (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing coffee-rails (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing faker (1.0.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing jquery-rails (1.0.19) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Using bundler (1.0.21) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing rails (3.1.1) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing sass (3.1.15) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing sass-rails (3.1.5) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing uglifier (1.2.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Installing will_paginate (3.0.3) ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Updating .gem files in vendor/cache ** [out :: homer.gannicott.co.uk] ** [out :: homer.gannicott.co.uk] Your bundle is complete! It was installed into /home/gannicott.co.uk/production/listen/www/shared/bundle ** [out :: homer.gannicott.co.uk] command finished in 12924ms capistrano的deploy.rb require 'bundler/capistrano' require 'capistrano/ext/multistage' # Based on: http://guides.beanstalkapp.com/deployments/deploy-with-capistrano.html set :application,"listen_later" set :scm,:git set :repository,"repos location" set :scm_passphrase,"passphrase" set :user,"username" set :stages,["staging","production"] set :default_stage,"staging" # The following needs to be added to avoid a failure (http://discuss.joyent.com/viewtopic.php?id=27326) default_run_options[:pty] = true namespace :deploy do desc "Tell Passenger to restart the app." task :restart do run "touch #{current_path}/tmp/restart.txt" end end # Removed --silent so I can see what's going on set :bundle_flags,"--deployment" capistrano的生产部署文件 server "homer.gannicott.co.uk",:app,:web,:db,:primary => true set :deploy_to,"/home/gannicott.co.uk/production/listen/www" 数据库配置文件 # SQLite version 3.x # gem install sqlite3 # # Ensure the SQLite 3 gem is defined in your Gemfile # gem 'sqlite3' development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 production: adapter: mysql2 encoding: utf8 reconnect: false database: databasename pool: 5 username: username password: password #socket: **/opt/local/var/run/mysql5/mysqld.sock** # adapter: sqlite3 # database: db/production.sqlite3 # pool: 5 # timeout: 5000 干杯! 解决方法
全部排序.虽然这是一个解决方案,但我并不完全满意.
这个调查 更多Google搜索引导我访问此页面: http://redmine.autotelik.co.uk/blogs(搜索’mysql2′,它会找到相关部分) 这导致我… Stack Overflow(当然!): Make bundler use different gems for different platforms 这反过来又让我: https://github.com/carlhuda/bundler/issues/646 问题 在Windows上运行Bundler时,它包含Windows版本mysql2的条目.但是,这与Linux上的要求不同.因此,Gemfile.lock文件不适合在Linux上使用. 解决方案 目标是在生产服务器上生成Bundler生成的Gemfile.lock文件.从我读过的内容来看,通常不建议这样做.那说,要实现这个…… 我不再在我的git存储库中包含Gemfile.lock文件: echo 'Gemfile.lock' >> .gitignore 我从git中删除了该文件: git rm Gemfile.lock git commit -am "Removing Gemfile.lock to cope with Windows and Linux differences" git push 我告诉Capistrano不要在部署模式下运行,只需在config / deploy.rb中添加以下行: set :bundle_flags,"" 您可能希望在引号中包含–quiet标志,但在此经验之后,我很想知道在部署时安装了什么. 现在,当我运行cap生产部署时,它每次都会重新生成Gemfile.lock文件.这意味着我的生产服务器现在使用了正确版本的mysql2. 我想这可以改进,但现在它对我有用. 希望有一天能帮助某人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |