วิธีการรันสคริปต์ Ruby ใน Terminal


231

ฉันได้ตั้งค่าทุกอย่างที่ฉันต้องการบน Mac (Ruby, Rails, Homebrew, Git, ฯลฯ ) และฉันยังได้เขียนโปรแกรมขนาดเล็ก ตอนนี้ฉันจะรันมันในเทอร์มินัลได้อย่างไร ฉันเขียนโปรแกรมใน Redcar และบันทึกเป็น. rb แต่ฉันไม่รู้วิธีเรียกใช้ผ่าน Terminal ฉันต้องการรันโปรแกรมและดูว่ามันใช้งานได้จริงหรือไม่ ฉันจะทำสิ่งนี้ได้อย่างไร


54
ฉันไม่รู้ว่าใครโหวตให้คำถามแรกของคุณ แต่ฉันคิดว่ามันแย่มากดังนั้นฉันจึงโหวตกลับ ขอให้โชคดีกับทุกสิ่งทุกอย่างดูเหมือนจะสับสนในตอนแรก แต่ยังคงมีอยู่และอีกไม่นานมันจะเป็นลักษณะที่สองและจากนั้นคุณจะช่วยเหลือผู้อื่นที่นี่
Iain

11
กรอไปข้างหน้าถึงปี 2560 และตอนนี้ OP มี 2,555 คะแนนและมากกว่า 100 ป้าย :)
Daniel

คำตอบ:


245

เพียงโทร: ruby your_program.rb

หรือ

  • เริ่มต้นโปรแกรมของคุณด้วย#!/usr/bin/env ruby,
  • ทำให้ไฟล์ของคุณทำงานได้โดยการเรียกใช้ chmod +x your_program.rb
  • และทำ ./your_program.rb some_param

1
เมื่อฉันเรียก ruby ​​your_program.rb ฉันจะได้รับสิ่งนี้: ruby: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว - testapp.rb (LoadError)
Tom Maxwell

1
@TomMaxwell เมื่อเขาพูดว่าruby your_program.rbคุณควรจะแทนที่ 'your_program.rb' ด้วยชื่ออะไรก็ตามที่อยู่ในโปรแกรมของคุณ ruby testapp.rbในกรณีนี้ขึ้นอยู่กับข้อผิดพลาดของคุณก็อาจจะควรจะเป็น แม้ว่า @Robin นั้นถูกต้องคุณต้องอยู่ในไดเรกทอรีเดียวกับไฟล์ Ruby
Joshua Cheek

2
ฉันคิดว่าเขาทำไม่เช่นนั้นข้อความแสดงข้อผิดพลาดจะไม่เกี่ยวกับ testapp.rb แต่จากความคิดเห็นอื่น ๆ ของเขาเขาไม่ทราบวิธีไปcdยังไดเรกทอรี Desktop ของเขาดังนั้นต้องเป็นอย่างนั้น
Robin

1
ถ้ามีบางคนต้องการไฟล์. rb ล่ะ
Jacky

1
@Chris Page ฉันมีปัญหานี้จริงโดยใช้วิธีแรก ฉันเปลี่ยน mod ตามที่คุณแนะนำและใช้งานได้! ขอบคุณตัน!
nstein

36

เปิดเทอร์มินัลแล้วเปิดโฟลเดอร์ที่บันทึกไฟล์
อดีต/home/User1/program/test.rb

  1. เปิดเทอร์มินัล
  2. cd /home/User1/program
  3. ruby test.rb

รูปแบบหรือ test.rb

class Test 
  def initialize
   puts "I love India"
  end
end

# initialize object
Test.new

เอาท์พุต

I love India

2
Classควรเป็นclass(ที่มีcต่ำกว่า) มิฉะนั้นจะไม่ทำงาน
DanielH

24

สมมติว่าล่ามทับทิมอยู่ในเส้นทางของคุณ (ควรเป็น) คุณก็แค่เรียกใช้

ruby your_file.rb

นั่นทำให้ฉันเกิดข้อผิดพลาดดังนั้นฉันเดาว่าฉันทำอะไรผิดพลาดระหว่างการติดตั้ง ฉันจะทำอย่างไร
Tom Maxwell

ruby: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว - testapp.rb (LoadError)
Tom Maxwell

testapp.rb คืออะไร คุณอยู่ใน dir เดียวกันกับที่มันอยู่หรือไม่?
Sergio Tulentsev

ฉันคิดว่าสิ่งที่คุณพูดเกี่ยวกับล่ามทับทิมที่อยู่ในเส้นทางของฉันเป็นปัญหา ฉันอาจทำอะไรไม่ถูกต้อง ฉันใช้เวลาเยอะแยะไปไหนมาไหนเพื่อจัดเตรียมทุกอย่าง
Tom Maxwell

2
cdเป็นคำสั่งเทอร์มินัลที่เปลี่ยนไดเรกทอรีปัจจุบัน ยกตัวอย่างเช่นที่จะไป "ตั้งโต๊ะ" dir ที่อยู่ใน HOME_DIR cd ~/Desktopของคุณคุณจะต้องทำ
Sergio Tulentsev

15

วิธีเรียกใช้ไฟล์ทับทิม: ruby your_program.rb

วิธีรันไฟล์ทับทิมเป็นสคริปต์:

  1. เริ่มโปรแกรมของคุณด้วย #!/usr/bin/env ruby

  2. เรียกใช้สคริปต์โดยใช้ ./your_program.rb param

  3. หากคุณไม่สามารถเรียกใช้สคริปต์นี้ให้ตรวจสอบการอนุญาตสำหรับไฟล์

โดยทั่วไปในการเรียกใช้สคริปต์คุณต้องให้สิทธิ์ในการดำเนินการ หากไม่ได้รับก็จะไม่ทำงานกับคำสั่งดังกล่าว ตรวจสอบสิทธิ์ของคุณแล้วใช้คำสั่งเดียวกัน
Priti Biyani

4

เพียงเรียกใช้ruby XXXXX.rbในเทอร์มินัลหากล่ามอยู่ในตัวแปร $ PATH ของคุณ

(สิ่งนี้อาจเป็นเรื่องราวได้จนกว่าคุณจะวิ่ง)


2

แม้ว่ามันจะสายเกินไปที่จะตอบคำถามนี้ แต่ก็ยังสำหรับพวกที่มาที่นี่เพื่อดูวิธีการแก้ปัญหาเดียวกันเช่นเดียวกับฉันและไม่ได้รับคำตอบที่น่าพอใจในหน้านี้เหตุผลก็คือคุณไม่มีไฟล์ของคุณ ในรูปแบบของ. rb นามสกุล คุณอาจจะใช้มันในโหมดข้อความธรรมดา ให้ฉันทำอย่างละเอียด เชื่อมโยงโซลูชันทั้งหมดในหน้าเว็บได้แล้ว (สมมติว่าชื่อไฟล์คือ abc.rb หรืออย่างน้อยคุณก็สร้าง abc):

พิมพ์ในหน้าต่างเทอร์มินัล:

cd ~/to/the/program/location
ruby abc.rb

และคุณทำเสร็จแล้ว

หากเกิดข้อผิดพลาดดังต่อไปนี้

ruby: No such file or directory -- abc.rb (LoadError)

จากนั้นไปที่ไดเรกทอรีที่คุณมีไฟล์ abc เปลี่ยนชื่อเป็น abc.rb ปิด gedit แล้วเปิดไฟล์ abc.rb อีกครั้ง ใช้ชุดคำสั่งและความสำเร็จชุดเดียวกัน!


2

สำหรับผู้ที่ไม่ได้รับการแก้ไขสำหรับคำตอบที่เก่ากว่าฉันเพียงแค่ใส่ชื่อไฟล์ของฉันเป็นบรรทัดแรกในรหัสของฉัน

ชอบมาก

 #ruby_file_name_here.rb

 puts "hello world"

1

เปิด Terminal

cd to/the/program/location
ruby program.rb

หรือเพิ่ม#!/usr/bin/env rubyในโปรแกรมแรกของคุณ (สคริปต์บอกว่าสิ่งนี้ดำเนินการโดยใช้ Ruby Interpreter)

เปิด Terminal

cd to/the/program/location
chmod 777 program.rb
./program.rb

1

ในกรณีที่มีคนพยายามเรียกใช้สคริปต์ในสภาพแวดล้อมของRAILSทางรถไฟจะให้นักวิ่งเพื่อเรียกใช้งานสคริปต์ในบริบททางรถไฟผ่าน

rails runner my_script.rb

รายละเอียดเพิ่มเติมได้ที่นี่: https://guides.rubyonrails.org/command_line.html#rails-runner

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