相关疑难解决方法(0)

File.expand_path("../../ Gemfile",__ FILE__)这是如何工作的?文件在哪里?

ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)

我只是想从某个目录访问一个.rb文件,一个教程告诉我使用这个代码,但我不知道它是如何找到gem文件的.

ruby

81
推荐指数
2
解决办法
4万
查看次数

是否需要File.expand_path(...,__ FILE__)最佳做法?

require File.expand_path(..., __FILE__)项目中需要其他文件的最佳方法吗?

ruby require

49
推荐指数
2
解决办法
2万
查看次数

Ruby需要'文件'和相对位置

所以我正在写一些rspec测试,我对我缺乏Ruby理解感到尴尬.

我有一个如下所示的文件结构:

  • GUI_Tests /测试/ test_spec.rb
  • GUI_Tests/windows_gui.rb
  • GUI_Tests/upload_tool.rb

当我运行test_spec.rb文件的规范时,我要求包含upload_tool文件,如下所示:

spec -r ../upload_tool -fs test_spec.rb
Run Code Online (Sandbox Code Playgroud)

然后,upload_tool需要windows_gui.rb,如下所示:

require '../windows_gui'
Run Code Online (Sandbox Code Playgroud)

我的问题是,为什么我必须引用相对于test_spec.rb(需要../)而不是upload_tool.rb的windows_gui.rb?这对我来说是错误的,我想要在测试规范的上下文中使用upload_tool.rb,这意味着每次都要更改要求.

显然我遗漏了一些东西,但是如果我没有引用相对于测试规范,我得到一个文件未找到错误.

很抱歉在这里这么无知,但我空手而归.任何想法都赞赏.

BB

ruby require ruby-1.8 ruby-1.9.1 ruby-1.8.7

19
推荐指数
1
解决办法
3万
查看次数

为什么relative_require不能在Ruby 1.8.6上运行?

我在Windows 7上学习Ruby(使用版本1.8.6).

当我尝试运行下面的stock_stats.rb程序时,我收到以下错误:

C:\Users\Will\Desktop\ruby>ruby stock_stats.rb
stock_stats.rb:1: undefined method `require_relative' for main:Object (NoMethodE
rror)
Run Code Online (Sandbox Code Playgroud)

我有三个v.small代码文件:

stock_stats.rb

require_relative 'csv_reader'

reader = CsvReader.new

ARGV.each do |csv_file_name|
  STDERR.puts "Processing #{csv_file_name}"
  reader.read_in_csv_data(csv_file_name)
end

puts "Total value = #{reader.total_value_in_stock}"
Run Code Online (Sandbox Code Playgroud)

csv_reader.rb

require 'csv' 
require_relative 'book_in_stock'

class CsvReader

  def initialize
    @books_in_stock = []
  end

  def read_in_csv_data(csv_file_name)
    CSV.foreach(csv_file_name, headers: true) do |row|
      @books_in_stock << BookInStock.new(row["ISBN"], row["Amount"])
    end
  end  

  # later we'll see how to use inject to sum a collection
  def total_value_in_stock
    sum = 0.0        
    @books_in_stock.each {|book| …
Run Code Online (Sandbox Code Playgroud)

ruby require

17
推荐指数
2
解决办法
2万
查看次数

调用另一个不是gem的ruby文件

我想创建一个带有函数库的静态ruby类.我在Vista上使用ruby 1.9.2

我的课就是这个:

class TestClass

  def say_hello
    puts "say hello"
  end
end
Run Code Online (Sandbox Code Playgroud)

在一个TestClass.rb文件中(我假设我是正确的,因为所有关于类的ruby教程都是一个完整的混乱,把所有东西放在一个神奇的东西(文件?),好像IRB是所有事情的开始和结束).

我的ruby main()(是的,我来自Java)或程序入口或者在ruby中调用它是:

require 'TestClass.rb'

puts "start"
say_hello
Run Code Online (Sandbox Code Playgroud)

但它失败了:

C:\ruby_path_with_all_my_classes>ruby classuser.rb
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
 TestClass.rb (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from classuser.rb:1:in `<main>'
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?是否可以在Ruby中调用其他文件,或者只包含一个包含所有类的文件?

ruby class file

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

ruby ×5

require ×3

class ×1

file ×1

ruby-1.8 ×1

ruby-1.8.7 ×1

ruby-1.9.1 ×1