Dynamically create autoload command from filenames in Ruby

I am testing a web application with ruby, rspec, capybara and selenium and i ran into an uninitialized constant ActiveAdminLoginPage Exception that i don't know how to solve. In spec_helper.rb i am requiring the following: Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f } I have 2 classes spec/page_objects/products/active_admin_login_page.rb module Products

在Ruby中从文件名动态创建自动加载命令

我正在用ruby,rspec,capybara和uninitialized constant ActiveAdminLoginPage测试一个web应用程序,我遇到了一个uninitialized constant ActiveAdminLoginPage异常,我不知道该如何解决。 在spec_helper.rb我需要以下内容: Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f } 我有2个班 spec/page_objects/products/active_admin_login_page.rb module Products class ActiveAdminLoginP

Is there a "do ... while" loop in Ruby?

I'm using this code to let the user enter in names while the program stores them in an array until they enter an empty string (they must press enter after each name): people = [] info = 'a' # must fill variable with something, otherwise loop won't execute while not info.empty? info = gets.chomp people += [Person.new(info)] if not info.empty? end This code would look much nicer in a

Ruby中有“do ... while”循环吗?

我使用这段代码让用户输入名字,而程序将它们存储在一个数组中,直到它们输入一个空字符串(它们必须在每个名称之后按回车): people = [] info = 'a' # must fill variable with something, otherwise loop won't execute while not info.empty? info = gets.chomp people += [Person.new(info)] if not info.empty? end 这段代码在do ... while循环中看起来会更好: people = [] do info = gets.chomp pe

Correct pulling edxops/forums way

I'm making my own devstack for works with OpenEdx . I pulled the official devstack repository from edx and i'm modifying it. I'm trying add forums to my stack but i can't run in since docker compose. I added this to composer file: forums: command: bash -c 'source /edx/app/forum/cs_comments_service_env && ruby app.rb -p 18080' container_name: edx.devstack.for

正确拉动edxops /论坛的方式

我正在与OpenEdx自己的OpenEdx 。 我从edx中拉出了正式的devstack存储库,我正在修改它。 我试图添加forums到我的堆栈,但我无法运行,因为码头作曲。 我将此添加到composer文件中: forums: command: bash -c 'source /edx/app/forum/cs_comments_service_env && ruby app.rb -p 18080' container_name: edx.devstack.forums depends_on: # - xqueue:xqueue - mongo - elasticse

Runnin rspec from IntelliJ

I'm usally running my specs from inside IntelliJ. I've deleted my gems and reinstalled them using bundle install (due to another error) and now I'm getting an error when trying to run the specs. I've noticed that running the specs from intelliJ it uses: from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' whic

IntelliJ的Runnin rspec

我通常在IntelliJ内部运行我的规格。 我已经删除了我的宝石,并使用软件包安装(由于另一个错误)重新安装了它们,现在我试图运行规格时出现错误。 我注意到它运行了它使用的intelliJ的规格: from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 当从shell运行时,情况并非如此(我在kernel_require脚本中放置了一个print来检查它)。 我也看到

Array assign vs. append behavior

The following behavior looks to me like the assign method is processing visited by value, whereas the append method is treating it as a reference: class MyClass def assign(visited) visited += ["A"] end def append(visited) visited << "A" end end instance = MyClass.new visited = [] instance.assign(visited) visited # => [] instance.append(visited) visited # => ["A"]

数组分配与追加行为

以下行为在我看来像的assign方法是处理visited按值,而append的方法是把它当作一个参考: class MyClass def assign(visited) visited += ["A"] end def append(visited) visited << "A" end end instance = MyClass.new visited = [] instance.assign(visited) visited # => [] instance.append(visited) visited # => ["A"] 有人可以解释这种行为吗? 这不是一个关于Ruby是支持按引用传递

Ruby sandboxing vs. integrating a scripting language

I am currently working on a text-based game engine in Ruby, with the app separated into Ruby code in /lib and YAML data in /data, which is loaded when needed by the game. I want to allow the data files to contain basic scripts, mostly in an event/observer model. However, I also want users to be able to generate and share custom scenarios without having to worry about malicious code embedded in

Ruby sandboxing与整合脚本语言

我目前正在Ruby中使用基于文本的游戏引擎,应用程序分为/ lib中的Ruby代码和/ data中的YAML数据,在游戏需要时加载该数据。 我想允许数据文件包含基本脚本,主要是在事件/观察者模型中。 不过,我也希望用户能够生成和共享自定义场景,而不必担心嵌入脚本中的恶意代码。 附录:我最初的计划是将用户创建的内容分成两种类型,即仅用于数据(因此安全)的“模块”和添加了附加功能(但显然不安全)的插件。 为了类比桌面游戏,

generate a random number with 7 digits

How can I produce a random number in a range from 1million to 10 million. rand(10) works, I tried rand(1..10) and that didn't work. 把你的基数,1,000,000,并添加一个从0到你的最大起始数的随机数: 1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592 这是一个实例方法: puts Random.new.rand(1_000_000..10_000_000-1) This will generate a random number between 1,000,000 and 9,999,999

生成一个7位数的随机数

我怎样才能产生一个从100万到1000万的随机数字。 兰特(10)的作品,我试过兰特(1..10),并没有奏效。 把你的基数,1,000,000,并添加一个从0到你的最大起始数的随机数: 1_000_000 + Random.rand(10_000_000 - 1_000_000) #=> 3084592 这是一个实例方法: puts Random.new.rand(1_000_000..10_000_000-1) 这将产生一个介于1,000,000和9,999,999之间的随机数。 rand(10_000_000-1_000_000)+1_000_000 这工作在1.8.7

Why fixnum doesn't have eigenclass?

This method is to return eigenclass of any object: class Object def eigenclass class << self; self; end end end Example for String: "abc".eigenclass # => #<Class:#<String:0x331df0>> Array: [1, 2].eigenclass # => #<Class:#<Array:0x0000000065d218>> But with Fixnum: 1.eigenclass # => TypeError: can't define singleton Why? As the Ruby Docs say:

为什么fixnum没有特征类?

这个方法是返回任何对象的特征类: class Object def eigenclass class << self; self; end end end 字符串示例: "abc".eigenclass # => #<Class:#<String:0x331df0>> 阵: [1, 2].eigenclass # => #<Class:#<Array:0x0000000065d218>> 但是使用Fixnum: 1.eigenclass # => TypeError: can't define singleton 为什么? 正如Ruby Docs所说: 对于任何给定的整数值

ruby when to eigenclasses come into existence

Do Eigenclasses exist prior to a singleton method being defined on a Object or Class. ie Do they always exist or come in existence when a singleton method or class method in defined? Every object always has a singleton class. Period. No ifs, no buts, no exceptions. Depending on how clever the compiler or interpreter is, it may or may not perform some performance optimizations. But like al

红宝石何时才能生成本征类

在对象或类上定义单例方法之前,是否存在特征类。 即当定义了单例方法或类方法时,它们是否总是存在或存在? 每个对象总是有一个单例类。 期。 没有ifs,没有buts,没有例外。 取决于编译器或解释器的聪明程度,它可能会或可能不会执行一些性能优化。 但是就像所有的性能优化一样,这些都不允许改变程序的结果,所以即使这些性能优化确实导致某些特定的单例类实际上不存在的状态,程序仍然必须表现得好像它确实存在一样

confused with Ruby accessor methods

i'm really confused how to name method names in Ruby classes. if i create an accessor like: attr_accessor :name it creates to methods: name and name= but when i call the second method with a whitespace between the 'name' and '=' it works 'n.name=' and 'n.name =' both works. i read somewhere that Ruby ignores whitespaces. Well then, why a method writte

与Ruby访问器方法混淆

我很困惑如何在Ruby类中命名方法名称。 如果我创建一个访问器,如:attr_accessor:name 它会创建方法:name和name = 但是当我使用'name'和'='之间的空格来调用第二个方法时,它会起作用 'n.name ='和'n.name ='都可以。 我在某处阅读Ruby忽略空格。 那么,为什么当我用空格调用它时,我写的一个方法不起作用? def getname结束 如果我以这种方式调用,它不起作用。 为什么? t