คำถามติดแท็ก ruby

Ruby เป็นหลายภาษาแพลตฟอร์มตีความโอเพ่นซอร์สเชิงวัตถุแบบไดนามิกที่สร้างขึ้นโดย Yukihiro Matsumoto (Matz) ในปี 1995 แท็ก [ruby] สำหรับคำถามที่เกี่ยวข้องกับภาษา Ruby รวมถึงไวยากรณ์และห้องสมุดของมัน ควรติดแท็กคำถาม Ruby on Rails ด้วย [ruby-on-rails]


18
ติดตั้ง gem: ไม่สามารถสร้างส่วนขยายดั้งเดิมของ gem (ไม่พบไฟล์ส่วนหัว)
ฉันใช้ Fedora 14 และฉันติดตั้งและใช้งานเซิร์ฟเวอร์ MySQL และ MySQL 5.1.42 อยู่ ตอนนี้ฉันพยายามทำสิ่งนี้ในฐานะผู้ใช้รูท: gem install mysql แต่ฉันได้รับข้อผิดพลาดนี้: Building native extensions. This could take a while... ERROR: Error installing mysql: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /usr/lib/ruby/ruby.h Gem files will remain installed in …
356 mysql  ruby  rubygems 

7
ฉันควรใช้นามแฝงหรือ alias_method หรือไม่
ผมพบว่าการโพสต์ในบล็อกเมื่อเทียบกับalias alias_methodดังที่แสดงในตัวอย่างที่ให้ไว้ในบล็อกโพสต์นั้นฉันเพียงต้องการนามแฝงวิธีการอื่นในชั้นเรียนเดียวกัน ฉันควรใช้แบบไหน ฉันมักจะเห็นการaliasใช้งาน แต่มีคนบอกฉันว่าalias_methodจะดีกว่า การใช้นามแฝง class User def full_name puts "Johnnie Walker" end alias name full_name end User.new.name #=>Johnnie Walker การใช้ alias_method class User def full_name puts "Johnnie Walker" end alias_method :name, :full_name end User.new.name #=>Johnnie Walker ลิงก์โพสต์บล็อกที่นี่
353 ruby  alias 


9
Ruby: การเรียกคลาสเมธอดจากอินสแตนซ์
ใน Ruby คุณจะเรียกวิธีการเรียนจากอินสแตนซ์ของคลาสนั้นได้อย่างไร บอกว่าฉันมี class Truck def self.default_make # Class method. "mac" end def initialize # Instance method. Truck.default_make # gets the default via the class's method. # But: I wish to avoid mentioning Truck. Seems I'm repeating myself. end end บรรทัดTruck.default_makeดึงค่าเริ่มต้น แต่มีวิธีพูดแบบนี้โดยไม่เอ่ยถึงTruckหรือไม่? ดูเหมือนว่าควรจะมี
347 ruby  class-method 

8
Rails: include vs. : joins
นี่เป็นคำถามที่ว่า "ทำไมสิ่งต่าง ๆ ถึงทำงานแบบนี้" มากกว่าคำถามที่ว่า "ฉันไม่รู้จะทำอย่างไร" ดังนั้นพระกิตติคุณในการดึงบันทึกที่เกี่ยวข้องที่คุณรู้ว่าคุณจะใช้คือการใช้:includeเพราะคุณจะได้เข้าร่วมและหลีกเลี่ยงการสืบค้นเพิ่มเติม: Post.all(:include => :comments) อย่างไรก็ตามเมื่อคุณดูล็อกจะไม่มีการเข้าร่วมเกิดขึ้น: Post Load (3.7ms) SELECT * FROM "posts" Comment Load (0.2ms) SELECT "comments.*" FROM "comments" WHERE ("comments".post_id IN (1,2,3,4)) ORDER BY created_at asc) มันเป็นทางลัดเพราะมันดึงทุกความคิดเห็นในครั้งเดียว แต่ก็ยังไม่เข้าร่วม (ซึ่งเป็นสิ่งเอกสารทั้งหมดที่ดูเหมือนว่าจะพูด) วิธีเดียวที่ฉันจะเข้าร่วมได้คือใช้:joinsแทน:include: Post.all(:joins => :comments) และบันทึกแสดง: Post Load (6.0ms) SELECT "posts".* FROM "posts" INNER JOIN …



12
อะไรคือวิธีที่“ ถูกต้อง” ในการวนซ้ำในอาร์เรย์ใน Ruby
PHP สำหรับหูดทั้งหมดมันค่อนข้างดีในการนับนี้ ไม่มีความแตกต่างระหว่างอาเรย์และแฮช (บางทีฉันไร้เดียงสา แต่นี่ดูเหมือนจะถูกต้องสำหรับฉัน) และเพื่อย้ำผ่านคุณเพียงแค่ทำ foreach (array/hash as $key => $value) ใน Ruby มีหลายวิธีที่จะทำสิ่งนี้: array.length.times do |i| end array.each array.each_index for i in array Hashes มีเหตุผลมากกว่านี้เพราะฉันใช้เสมอ hash.each do |key, value| เหตุใดฉันจึงไม่สามารถทำสิ่งนี้กับอาร์เรย์ได้ ถ้าผมต้องการที่จะจำเพียงหนึ่งวิธีที่ผมคิดว่าผมสามารถใช้each_index(ตั้งแต่มันทำให้ทั้งดัชนีและความคุ้มค่าที่มีอยู่) แต่มันน่ารำคาญที่จะต้องทำแทนเพียงarray[index]value โอ้ใช่ฉันลืมไปarray.each_with_indexแล้ว อย่างไรก็ตามอันนี้ครับเพราะมันไป|value, key|และhash.eachไป|key, value|! นี่มันไม่บ้าเหรอ?
341 ruby  arrays  loops 


5
Rails 4: before_filter vs. before_action
ในราง> 4.0.0 ปั่นไฟสร้างการดำเนินงาน CRUD ด้วยไม่ได้before_action before_filterดูเหมือนว่าจะทำในสิ่งเดียวกัน ดังนั้นความแตกต่างระหว่างสองสิ่งนี้คืออะไร?

5
วิธีการแปลงวัตถุแฮช ruby ​​เป็น JSON?
วิธีการแปลงวัตถุแฮช ruby ​​เป็น JSON? ดังนั้นฉันลองตัวอย่างด้านล่างนี้แล้วมันใช้ไม่ได้ ฉันดู RubyDoc และเห็นได้ชัดว่าHashวัตถุไม่มีto_jsonวิธี แต่ฉันกำลังอ่านบนบล็อกที่ Rails สนับสนุนactive_record.to_jsonและสนับสนุนhash#to_jsonด้วย ฉันสามารถเข้าใจได้ว่าActiveRecordเป็นวัตถุ Rails แต่Hashไม่ได้เป็นของ Rails มันเป็นวัตถุ Ruby บริสุทธิ์ ดังนั้นใน Rails คุณสามารถทำได้hash.to_jsonแต่ไม่ใช่ Ruby ที่บริสุทธิ์หรือ car = {:make => "bmw", :year => "2003"} car.to_json

14
เมื่อใดควรใช้แลมบ์ดาเมื่อใดควรใช้ Proc.new?
ใน Ruby 1.8 มีความแตกต่างเล็กน้อยระหว่าง proc / lambda ในมือข้างหนึ่งและProc.newอีกด้านหนึ่ง ความแตกต่างเหล่านั้นคืออะไร? คุณสามารถให้แนวทางเกี่ยวกับวิธีการตัดสินใจเลือกได้หรือไม่? ใน Ruby 1.9 proc และ lambda นั้นแตกต่างกัน ตกลงคืออะไร?
336 ruby  lambda  proc 

10
วิธีการค้นหาที่กำหนดวิธีการที่รันไทม์?
เมื่อเร็ว ๆ นี้เรามีปัญหาที่เกิดขึ้นหลังจากที่มีการกระทำหลายอย่างเกิดขึ้นกระบวนการแบ็กเอนด์ไม่สามารถทำงานได้ ตอนนี้เราเป็นเด็กชายและเด็กหญิงตัวเล็ก ๆ ที่ดีและวิ่งrake testตามเช็คอินทุกครั้ง แต่เนื่องจากมีสิ่งแปลกประหลาดบางอย่างในการโหลดห้องสมุดของ Rails มันเกิดขึ้นเมื่อเราวิ่งจาก Mongrel โดยตรงในโหมดการผลิต ฉันติดตามข้อผิดพลาดและเป็นเพราะ Rails gem ใหม่เขียนทับวิธีในคลาส String ในวิธีที่ใช้งานได้ไม่ดีในโค้ด Rails ยังไงก็ตามเรื่องสั้นสั้น ๆ มีวิธีที่รันไทม์เพื่อถามทับทิมที่กำหนดวิธีการ? สิ่งที่ต้องการwhereami( :foo )กลับมา/path/to/some/file.rb line #45? ในกรณีนี้การบอกฉันว่ามันถูกกำหนดไว้ในคลาส String จะไม่ช่วยเหลือเพราะห้องสมุดบางแห่งทำงานหนักเกินไป ฉันไม่สามารถรับประกันได้ว่าแหล่งข้อมูลอาศัยอยู่ในโครงการของฉันดังนั้นการโลภเพื่อ'def foo'ไม่จำเป็นต้องให้สิ่งที่ฉันต้องการไม่ต้องพูดถึงถ้าฉันมีหลายคน def fooบางครั้งฉันก็ไม่รู้จนกระทั่งถึงรันไทม์ที่ฉันอาจใช้

9
วิธีหลีกเลี่ยง“ ไม่สามารถโหลดไฟล์ - utils / popen” จาก homebrew บน OSX
ฉันได้รับข้อผิดพลาดเมื่อฉันทำงาน brewใน terminal: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- utils/popen (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/utils.rb:6:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/Homebrew/global.rb:9:in `<top (required)>' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /usr/local/Library/brew.rb:16:in `<main>' นี่คือการตั้งค่าอัญมณีของฉัน: - RUBYGEMS VERSION: 2.0.14 - RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) …
327 ruby  macos  rubygems  homebrew 

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