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

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

2
ทำไมอ็อบเจกต์ Regexp ถือว่าเป็น "เท็จ" ในรูบี?
ทับทิมมีความคิดที่เป็นสากลของ " truthiness " และ " falsiness " ทับทิมไม่ได้มีสองชั้นที่เฉพาะเจาะจงสำหรับวัตถุบูลีนTrueClassและFalseClassมีอินสแตนซ์เดี่ยวแสดงโดยตัวแปรพิเศษtrueและfalseตามลำดับ อย่างไรก็ตามtruthinessและfalsinessไม่ จำกัด เฉพาะกรณีของทั้งสองเรียนที่เป็นแนวคิดที่เป็นสากลและนำไปใช้กับทุกวัตถุเดียวในรูบี วัตถุทุกคนเป็นอย่างใดอย่างหนึ่งtruthyหรือfalsy กฎนั้นง่ายมาก โดยเฉพาะวัตถุสองอย่างเท่านั้นที่เป็นเท็จ : nilอินสแตนซ์ของNilClassและ falseอินสแตนซ์เดี่ยวของ FalseClass ทุกวัตถุอื่น ๆ เดียวคือtruthy ซึ่งรวมถึงวัตถุที่ถือว่าเป็นเท็จในภาษาการเขียนโปรแกรมอื่นเช่น ,Integer 0 ,Float 0.0 ที่ว่างเปล่า,String '' ที่ว่างเปล่า,Array [] ที่ว่างเปล่า,Hash {} กฎเหล่านี้สร้างขึ้นในภาษาและไม่สามารถระบุได้โดยผู้ใช้ ไม่มีto_boolการแปลงโดยนัยหรืออะไรที่คล้ายกัน นี่คือใบเสนอราคาจากข้อกำหนดภาษา ISO Ruby : 6.6 ค่าบูลีน วัตถุถูกแบ่งออกเป็นทั้งวัตถุ trueishหรือวัตถุ falseish เท็จเท่านั้นและไม่มีวัตถุปลอม falseเป็นอินสแตนซ์เดียวของคลาสFalseClass(ดู 15.2.6) ซึ่งfalse-expressionประเมินค่า (ดู 11.5.4.8.3) …
16 regex  ruby  boolean  jruby  yarv 


1
มีการกำหนดวิธีการที่เรียกว่า `… 'ที่นี่
Ruby 2.7 เพิ่งเปิดตัวและมันมาพร้อมกับคำเตือนใหม่เหล่านี้สำหรับ"การแยกของอาร์กิวเมนต์ตำแหน่งและคำหลัก" (ดูโพสต์เผยแพร่ ) ฉันกำลังเล่นกับมันและพบว่ามีคำเตือนอื่นซึ่งฉันไม่เข้าใจ ตัวอย่าง: def multiply(x:, y:) x * y end args = { x: 2, y: 3 } multiply(args) # ./warning.rb:7: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call # ./warning.rb:1: warning: The called method `multiply' …
13 ruby 

4
วิธีที่ไม่ได้กำหนด `plain_specs 'สำหรับ # <Bundler :: RubygemsIntegration: 0x00005633f09a9000> (NoMethodError)
ฉันได้ดึงโครงการที่ฉันมีในงานของฉันและเมื่อฉันพยายามเรียกใช้rails db:migrateเทอร์มินัลขอให้ติดตั้ง "Bundler 2" ดังนั้นฉันจึงทำ ตอนนี้เมื่อฉันพยายามทำrails db:migrateฉันมีข้อผิดพลาดดังต่อไปนี้: /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:84:in `setup': undefined method `plain_specs' for #&lt;Bundler::RubygemsIntegration:0x00005633f09a9000&gt; (NoMethodError) from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:124:in `check' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems-bundler/noexec.rb:131:in `&lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:168:in `rescue in require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:178:in `require' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/rubygems-bundler-1.4.5/lib/rubygems_executable_plugin.rb:4:in `block in &lt;top (required)&gt;' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:50:in `block in run' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `each' from /home/acartesc/.rvm/rubies/ruby-2.4.3/lib/ruby/gems/2.4.0/gems/executable-hooks-1.5.0/lib/executable-hooks/hooks.rb:49:in `run' …

3
การอัปเดต fastlane ล้มเหลว: signet ต้องการ Ruby version> = 2.4.0
ฉันไม่สามารถอัปเดตช่องทาง เมื่อฉันรันfastlane update_fastlaneฉันได้รับข้อผิดพลาดดังต่อไปนี้ ERROR: Error installing fastlane: signet requires Ruby version &gt;= 2.4.0. เมื่อฉันรันruby -vฉันได้รับruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18] ฉันติดอยู่ที่ fastlane เวอร์ชั่น 2.28.3 ฉันได้ลองติดตั้ง fastlane ใหม่ แต่ยังคงพบข้อผิดพลาดเดิม สาเหตุของปัญหานี้คืออะไร ฉันจะแก้ไขปัญหานี้ได้อย่างไร
13 ruby  fastlane 

3
เป็นไปได้ไหมที่จะมีพูลการเชื่อมต่อฐานข้อมูลหลายตัวในรางเพื่อสลับไปมา?
พื้นหลังเล็กน้อย ฉันใช้พลอยอพาร์ทเม้นท์เพื่อเรียกใช้แอพหลายผู้เช่ามาหลายปีแล้ว ตอนนี้เมื่อเร็ว ๆ นี้ความต้องการในการขยายฐานข้อมูลออกไปยังโฮสต์ที่แยกต่างหากได้มาถึงแล้วเซิร์ฟเวอร์ db ก็ไม่สามารถติดตามได้อีกต่อไป (ทั้งการอ่านและการเขียนมีมากเกินไป) - และใช่ฉันปรับขนาดฮาร์ดแวร์ให้สูงสุด ฮาร์ดแวร์ 64 คอร์, 12 Nvm-e ไดรฟ์ในการโจมตี 10, 384Gb ram เป็นต้น) ฉันกำลังพิจารณาที่จะทำสิ่งนี้ต่อผู้เช่า (1 tenant = 1 การเชื่อมต่อฐานข้อมูล config / pool) เพราะนั่นจะเป็นวิธีที่ "ง่าย" และมีประสิทธิภาพในการเพิ่มnumber-of-tenantsความจุได้มากขึ้นโดยไม่ต้องเปลี่ยนรหัสแอปพลิเคชัน ตอนนี้ฉันกำลังเรียกใช้ rails 4.2 atm. และอีกไม่นานจะอัพเกรดเป็น 5.2 ฉันเห็นว่า Rails 6 เพิ่มการสนับสนุนสำหรับคำจำกัดความการเชื่อมต่อต่อโมเดลอย่างไรก็ตามนั่นไม่ใช่สิ่งที่ฉันต้องการจริงๆเพราะฉันมี schema ฐานข้อมูลแบบมิเรอร์ทั้งหมดสำหรับผู้เช่า 20 คนของฉัน โดยทั่วไปฉันจะสลับ "ฐานข้อมูล" ต่อคำขอ (เป็นมิดเดิลแวร์) …

5
ฉันจะตรวจสอบได้อย่างไรว่าภาพสองภาพนั้น“ เหมือนกัน” แม้ว่าจะมีการครอบตัด / อัตราส่วนแตกต่างกันเล็กน้อย?
ฉันมีสองภาพที่แตกต่าง: ใน 100px ด้วยหรือ 400px และ ในความกว้าง 100px หรือ 400px ในขณะที่คุณสามารถเห็นทั้งสองอย่างชัดเจน "เดียวกัน" จากมุมมองของมนุษย์ ตอนนี้ฉันต้องการตรวจสอบตามโปรแกรมว่าพวกเขาเหมือนกัน ฉันใช้เวทย์มนตร์ภาพผ่านพลอยทับทิมที่เรียกว่าrmagick: img1 = Magick::Image.from_blob(File.read("image_1.jpeg")).first img2 = Magick::Image.from_blob(File.read("image_2.jpeg")).first if img1.difference(img2).first &lt; 4000.0 # I have found this to be a good threshold, but does not work for cropped images puts "they are the same!!!" end แม้ว่าวิธีนี้จะทำงานได้ดีสำหรับรูปภาพที่มีอัตราส่วน / …

5
มี alias_method สำหรับวิธีการเรียนหรือไม่?
พิจารณาคลาสต่อไปนี้: class Foo def an_inst_method 'instance method' end def self.a_class_method 'class method' end alias_method :a_new_inst_method, :an_inst_method end นี่ไม่มีปัญหาและคุณสามารถโทรFoo.new.a_new_inst_methodโดยไม่มีปัญหา ฉันต้องการความสามารถในการมีคลาสวิธีการFoo.add_widget(*items)และนามแฝงเพื่อให้ฉันสามารถทำสิ่งที่ชอบ: Foo.add_widget 'item1' Foo.add_widgets 'item2', 'item3' โดยพื้นฐานแล้วมันมี "ruby style" ที่ชอบ1.minuteและ2.minutesดังนั้นฉันต้องการนามแฝงFoo.add_widgetดังนั้นการเรียกFoo.add_widgetsใช้วิธีการเดียวกันแน่นอน ฉันรู้ว่าฉันสามารถห่อมันได้ แต่ฉันรู้สึกว่าฉันควรจะทำสิ่งนี้ด้วยวิธีที่สะอาดกว่า พิจารณาความพยายามของฉันที่ลองทำสิ่งนี้: class Foo def an_inst_method 'instance method' end def self.a_class_method 'class method' end alias_method :a_new_inst_method, :an_inst_method alias_method :a_new_class_method, :a_class_method end …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.