คุณได้เปิดใช้งานคราด 0.9.0 แล้ว แต่ Gemfile ของคุณต้องการคราด 0.8.7


124

ฉันกำลังพยายามดำเนินโครงการทางรถไฟฉันเข้าใจแล้ว

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

ถ้าฉันทำ: "บันเดิลติดตั้ง"

แต่ฉันได้รับ

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

ในขณะที่ทำ

rake db:migrate

คำตอบ:


245

ขั้นแรกตรวจสอบให้แน่ใจว่ามีการกล่าวถึงคราดใน Gemfile ของคุณ หากไม่ใช่ให้เพิ่มและระบุเวอร์ชัน "คุณเปิดใช้งานแล้ว"

จากนั้นคุณจะต้องบอกให้บันเดิลอัปเดตเวอร์ชันคราดที่ใช้สำหรับแอปของคุณ:

bundle update rake

มันจะอัปเดตGemfile.lockให้คุณ


2
สิ่งนี้ไม่ได้ผลสำหรับฉัน เมื่อฉันรันคำสั่งนี้มันจะเหมือนกับ 'การติดตั้งบันเดิล' ทุกประการและแสดงว่ากำลังใช้คราดเวอร์ชันเดียวกัน มันไม่อัปเดต
33

5
ฉันต้องเพิ่ม gem 'rake', 'version #' ใน gemfile ของฉันและเรียกใช้ 'bundle update rake' เพื่อให้ gemfile.lock ของฉันได้รับการอัปเดตอย่างถูกต้อง FYI สำหรับใครก็ตามที่ไม่สามารถแก้ปัญหานี้ได้
33

44

ที่คุณกำลังใช้คำสั่งคราดเช่น

rake db:migrate

ใช้สิ่งนี้แทน:

bundle exec rake db:migrate

จะเป็นเช่นนี้จนกว่ารางและ / หรือคราดเวอร์ชันล่าสุดจะทำงานร่วมกันได้ดี


3
บิตเกี่ยวกับ "รางและ / หรือคราดรุ่นล่าสุด" ที่ทำงานร่วมกันได้ดีมีความหมายเฉพาะเจาะจงไม่ระบุชื่อจุดในเวลาและภายใต้สมมติฐานเฉพาะบางประการเกี่ยวกับขั้นตอนการทำงานที่ใช้งาน ฉันคิดว่าความหมายนี้คือ "คุณกำลังใช้ราวจับที่มีเลือดออกและคราดยังไม่ติด" แต่กรณีดังกล่าวสามารถแก้ไขได้โดยวิธี "บันเดิล exec" หรือ "แก้ไข Gemfile" เช่นกันและวิธีการเหล่านี้ยังช่วยแก้ปัญหาเมื่อไม่มีปัญหาความเข้ากันได้ภายใน แต่มีเพียงประวัติเวิร์กโฟลว์ที่สับสน
jackr

24

ฉันขอขอบคุณ Dobry Den, เชียร์เพื่อน แต่ต้องทำมากกว่านี้อีกหน่อย นี่คือวิธีแก้ปัญหา (ใช้ได้กับฉัน) ฉันได้เพิ่ม

gem 'rake','0.8.7'

บน Gemfile ซึ่งไม่ได้อยู่ที่นั่น แต่รางรุ่นใหม่ของฉันติดตั้งคราดโดยอัตโนมัติ (0.9.0)

หลังจากที่ฉันลบ rake0.9.0 โดยgem uninstall rake และหลังจากทำbundle update rakeแล้วฉันสามารถสร้างและย้ายฐานข้อมูลได้



7

ระบุเวอร์ชันที่คุณต้องการใน Gemfile ของคุณ

gem 'rake', '0.9.0' 

แล้วก็

bundle update rake

คุณต้องใช้บันเดิล exec เพื่อรันงานคราดของคุณ

bundle exec rake db:migrate

ดูเหมือนว่าจะไม่ "ยกเลิกการเปิดใช้งาน" เวอร์ชันที่ใหม่กว่า อย่างไรก็ตามการลบ Rake ทั้งหมดและติดตั้งงานใหม่
JosephK

6

ดูสิมันคืออนาคต สำหรับฉันมันบ่นว่าฉันติดตั้งคราด 10.x เมื่อมันต้องการ 0.9.5 ไม่ค่อยแน่ใจไม่คุ้นเคยกับ Ruby มากพอที่จะเจาะลึกสิ่งที่เกิดขึ้นกับหมายเลขเวอร์ชันล่าสุด แต่สิ่งที่ฉันทำคือ:

gem uninstall rake
gem install rake -v 0.9.5

เพื่อบังคับให้ระบบติดตั้งคราดเวอร์ชันที่แอปต้องการ (สำหรับฉันมันคือ Octopress)


2
อนาคตโทรมาและต้องการยืมกางเกง Hammer ของคุณ
Keith Layne

สวัสดีมันเป็นอนาคตอีกครั้ง ฉันได้ยินมาว่ากางเกง Hammer กำลังจะกลับมาในที่สุด
subdigit

5

ฉันมีปัญหานี้ (กับอัญมณีอื่นที่ไม่ใช่คราด) และฉันสามารถแก้ไขได้โดย

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

โปรดทราบว่าไม่ได้ใช้คีย์เวิร์ด 'sudo' (เช่น sudo bundle install) เนื่องจากอาจทำให้อัญมณีของคุณอยู่ในไดเร็กทอรีที่แอปพลิเคชันรางของคุณอาจไม่ได้ค้นหา


3

ถ้าฉันเข้าใจสิ่งที่คุณไม่ได้ถามคุณต้องเปิดGemfileไฟล์ของคุณและเปลี่ยนบรรทัด ...

gem 'rake', '0.8.7'

...ถึง...

gem 'rake', '0.9.0'

จะเป็นอย่างไรถ้าฉันต้องการใช้ 0.8.7 แทน 0.9?
Kir

6
คราดเจ็มไม่ได้ระบุไว้ใน Gemfile ของคุณโดยค่าเริ่มต้นเนื่องจากเป็นการพึ่งพา Rails หากคุณอัปเดตคราดเจ็มเป็น 0.9.0 คุณยังมีอัญมณี 0.8.7 อยู่ในระบบของคุณ (ตรวจสอบด้วยgem list) ฉันค่อนข้างแน่ใจว่าหากgem 'rake', '0.8.7'ยังระบุไว้ในของคุณGemfile.lockมันจะยังคงใช้อัญมณี 0.8.7 ได้โดยไม่มีปัญหา ถ้าไม่เช่นนั้นลองเรียกใช้bundleหลังจากเพิ่มgem 'rake', '~> 0.8.7'Gemfile ของคุณ (ไม่ใช่. lock) และดูว่ามีข้อความว่าอะไรหรือไม่
danneu

ฉันเห็นด้วยกับ @Dobry Den
Olivier L.

ไม่ได้กำหนดอัญมณี 'คราด' จะใช้ค่าเริ่มต้นถ้าฉันมี Gem Rake หลายอัน (0.8.7 และ 0.9.0) เราตั้งค่าผิดนัดเก่าได้ไหม
Mujah Maskey

3

เพิ่มสิ่งนี้ใน Gemfile ของคุณ

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

จากนั้นถอนการติดตั้งrake-0.9.0

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.