복붙노트

[RUBY-ON-RAILS] 다른 플랫폼 만들기 들러 사용 다른 보석

RUBY-ON-RAILS

다른 플랫폼 만들기 들러 사용 다른 보석

나는 레일 3에 대한 우리의 레일에게 2.3.8 응용 프로그램의 업그레이드 하나 일하고 있어요, 그리고 들러 및 배포에 성가신 문제로 실행했다. 나는 윈도우 시스템에서 응용 프로그램을 개발하지만 생산 환경은 우분투 리눅스를 실행 중입니다. 이제 내 문제는 들러 프로덕션 환경에서 MySQL의 보석을 무시하고, 승객이 밖으로 뱉어입니다 ". !!! MySQL의 보석을 누락하여 Gemfile에 추가 : 보석 'MySQL을', '2.8.1'"

여기 내 Gemfile은 다음과 같습니다

# Edit this Gemfile to bundle your application's dependencies.
# This preamble is the current preamble for Rails 3 apps; edit as needed.
source 'http://rubygems.org'

gem 'rails', '3.0.0'
gem 'net-ldap', :require => 'net/ldap'
gem 'highline', :require => 'highline/import'
gem 'mysql', '2.8.1'
gem 'net-ssh', :require => 'net/ssh'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
  gem 'fakeweb', :require => 'fakeweb'
  gem 'flexmock', :require => 'flexmock/test_unit'
end

당신이 볼 수 있듯이, MySQL의 보석이 지정됩니다. 배포 할 때 그러나 들러 그것을 무시합니다. 왜? 그 이유는 Bundler를 다음 Gemfile.lock를 (단지 관련 부분 포함)를 생성한다는 것입니다 :

....
mime-types (1.16)
mysql (2.8.1-x86-mingw32)
net-ldap (0.1.1)
....

이 플랫폼 특정 보석을 포함 것을 알 수 있습니다. 이것은 리눅스에서 실행 때 보석이 적합하지 않습니다 (그리고 appearently 무시) 나는, 그것을 수행 할 작업을 분명히 아닙니다.

그래서, Bundler를 이러한 문제를 처리 할 수있는 방법으로 오는가? 아니면 수동으로 생성 Gemfile.lock에 내 개발 컴퓨터에 설치 번들 실행할 때마다 MySQL의 보석 버전을 변경하는 것을 기억해야합니까?

사전에 감사합니다!

최신 정보

들러 팀은이 문제를 알고 것 같다.

해결법

  1. ==============================

    1.이 Bundler를에서 알려진 문제입니다. 해결 방법 중 하나입니다 :

    이 Bundler를에서 알려진 문제입니다. 해결 방법 중 하나입니다 :

  2. ==============================

    2.나는 비슷한 문제가 있습니다. 내 Gemfile에 다음처럼 작성할 수 있도록하고 싶습니다 :

    나는 비슷한 문제가 있습니다. 내 Gemfile에 다음처럼 작성할 수 있도록하고 싶습니다 :

    platforms :ruby do                      # linux
      gem 'nokogiri', "1.5.0.beta.2" 
    end
    
    platforms :mswin do
      gem 'nokogiri', "1.4.4.1" 
    end
    

    그러나 들러 내가 허용하고 있지 않다 알려줍니다. 그래서,이 특정 사건에서 '내 해결 방법은, 버전의 범위를 지적하는 것입니다 :

    gem 'nokogiri', ">= 1.4.4.1", "<=1.5.0.beta.2" 
    

    어느 - 순간 - 내 리눅스 컴퓨터에서 1.4.4.1 내 Windows 컴퓨터 버전 및 1.5.0.beta.2을 제공합니다. 아마 당신이 비슷한 추악한 해결 방법을 기록 할 수 있습니다 ;-)

  3. ==============================

    3.엔진 마당에 우리의 엔지니어 경우 다른 플랫폼에서이 문제를 해결하고 보석 녹여 Bundler 프로그램에 패치를 제출했다. 우리는 많은 Windows가 RailsInstaller 데모 튜토리얼을 통해 실행 한 후 배포하려고와 같은 문제가 있었어요. 우리가 발견 한 가장 좋은 수정 프로그램은 다음을 수행하는 것입니다 :

    엔진 마당에 우리의 엔지니어 경우 다른 플랫폼에서이 문제를 해결하고 보석 녹여 Bundler 프로그램에 패치를 제출했다. 우리는 많은 Windows가 RailsInstaller 데모 튜토리얼을 통해 실행 한 후 배포하려고와 같은 문제가 있었어요. 우리가 발견 한 가장 좋은 수정 프로그램은 다음을 수행하는 것입니다 :

    당신이 Bundler를 패치에 대해 궁금하다면, 당신은 https://github.com/carlhuda/bundler/pull/1451에서 알림을받을 수 있습니다

    이 사람은 여전히 ​​답을 찾고 도움이되기를 바랍니다.

  4. ==============================

    4.나는 문제가 MySQL의 보석 제대로 필요한 헤더를 발견하지 않는다는 것입니다 생각합니다. 당신은 mysql2 보석을 사용하는 동안 이동하여이 문제를 해결할 수 있습니다, 당신은 단지 액티브 통합을위한 database.yml을에 데이터베이스 어댑터를 업데이트해야합니다.

    나는 문제가 MySQL의 보석 제대로 필요한 헤더를 발견하지 않는다는 것입니다 생각합니다. 당신은 mysql2 보석을 사용하는 동안 이동하여이 문제를 해결할 수 있습니다, 당신은 단지 액티브 통합을위한 database.yml을에 데이터베이스 어댑터를 업데이트해야합니다.

    또한, 당신은 절대적으로 필요한 경우 C는 보석을 확장에 빌드 플래그를 전달할 수 있습니다 :

    번들 구성 build.mysql --with-MySQL을 구성 = / usr / 지방 / MySQL은 / ​​빈 /되는 mysql_config.

  5. ==============================

    5.내가 전에이 문제에 달렸다을했습니다, 그리고 mysql2 보석을 사용하여 실제로 문제를 해결 않습니다. 나는 당신에게있는 거 황금 그게 당신이 찾고있는 해답이 아니다 알아,하지만 디에고의 대답이를 결합.

    내가 전에이 문제에 달렸다을했습니다, 그리고 mysql2 보석을 사용하여 실제로 문제를 해결 않습니다. 나는 당신에게있는 거 황금 그게 당신이 찾고있는 해답이 아니다 알아,하지만 디에고의 대답이를 결합.

  6. ==============================

    6.당신은 (여기 링크) RVM을 사용 봤어? 당신이 더 당신이 생산에있는 것과 같은 환경에서 작동 할 수 있도록 그것은, 루비에게 가상 기계 및 Gemsets 고립 설치할 수 있습니다. 솔직히이 문제를 해결할 수 있는지를 알고 있지만, 그것의 가치가 촬영하지 않습니다.

    당신은 (여기 링크) RVM을 사용 봤어? 당신이 더 당신이 생산에있는 것과 같은 환경에서 작동 할 수 있도록 그것은, 루비에게 가상 기계 및 Gemsets 고립 설치할 수 있습니다. 솔직히이 문제를 해결할 수 있는지를 알고 있지만, 그것의 가치가 촬영하지 않습니다.

    어쨌든, 나는 이것이 당신이 듣고 싶은 대답하지 알고 있지만, 이럴 윈도우 레일에서 개발 최적의 플랫폼을 사용하지 않습니다. 나는 최근이 많은 두통에서 당신을 저장, 레일 응용 프로그램을 개발하기 위해 주로 맥북을 샀다. 당신은 또한 더 나은 윈도우 포트 또는 Cygwin에서 사용하는 것보다, 그것의 방법을 개발 컴퓨터에 리눅스를 설치하고 사용할 수 있습니다.

  7. ==============================

    7.생산 Gemfile.lock과 보석을 범하지 마십시오. 당신은 실행 들러 생산에 다시 설치해야합니다.

    생산 Gemfile.lock과 보석을 범하지 마십시오. 당신은 실행 들러 생산에 다시 설치해야합니다.

  8. ==============================

    8.당신이 뭔가를 할 수 있습니다 :

    당신이 뭔가를 할 수 있습니다 :

    platforms :ruby do
      gem "sqlite3-ruby", :require => "sqlite3", :group => [:development, :test]
    end
    
    platforms :jruby do
      gem 'activerecord-jdbc-adapter', :require => false
      gem "jdbc-sqlite3", :require => false
    end
    

    BTW, 당신은 모든 시스템이 동일한 보석 버전과 응용 프로그램을 실행합니다 이런 식으로하기 때문에 버전 관리로 Gemfile.lock을 넣어해야합니다.

  9. ==============================

    9.나는이 문제를 건너 온 다음이 고통스러운 작업을 위해 스크립트를 작성 끝났다. http://gouravtiwari.blogspot.com/2011/03/development-on-windows-deploying-to.html

    나는이 문제를 건너 온 다음이 고통스러운 작업을 위해 스크립트를 작성 끝났다. http://gouravtiwari.blogspot.com/2011/03/development-on-windows-deploying-to.html

  10. from https://stackoverflow.com/questions/3642085/make-bundler-use-different-gems-for-different-platforms by cc-by-sa and MIT license