小编tor*_*o2k的帖子

<'a,'b:'a>是否意味着生命周期'b必须比生命周期更长'a?

我想实现一个类似于标准库定义的调试构建器的构建器.它们使用如下结构定义:

struct DebugFoo<'a, 'b: 'a> {
    fmt: &'a mut std::fmt::Formatter<'b>
}
Run Code Online (Sandbox Code Playgroud)

既然我不明白表格的<'a, 'b: 'a>含义,也不能在Rust书或Rust参考文献中找到它(至少关于生命周期),我只是试图删除我不明白的内容,看看会发生什么:

struct DebugFoo<'a, 'b> {
    fmt: &'a mut std::fmt::Formatter<'b>
}
Run Code Online (Sandbox Code Playgroud)

编译它我得到这个错误:

in type `&'a mut core::fmt::Formatter<'b>`, reference has a longer 
lifetime than the data it references
Run Code Online (Sandbox Code Playgroud)

而且这个说明:

the pointer is valid for the lifetime 'a as defined on the struct at 1:0
but the referenced data is only valid for the lifetime 'b as defined on
the struct at 1:0
Run Code Online (Sandbox Code Playgroud)

这对我来说是有道理的:'a并且 …

lifetime rust

16
推荐指数
2
解决办法
2024
查看次数

构建具有特征的对象列表

我正在使用factory_girl在我的测试中创建对象,这是我工厂的一个例子:

factory :user do
  name "John"
  surname "Doe"

  trait :with_photo do
    ignore do
      photo_count 1
    end

    after(:create) do |user, evaluator|
      FactoryGirl.create_list(:photo, evaluator.photo_count)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

所以我可以创建一个像这样的用户:

FactoryGirl.create(:user, :with_photo)
Run Code Online (Sandbox Code Playgroud)

或者没有照片:

FactoryGirl.create(:user) 
Run Code Online (Sandbox Code Playgroud)

或者创建用户列表:

FactoryGirl.build_list(:user, 5)
Run Code Online (Sandbox Code Playgroud)

但是:with_photo,如果我想用照片创建其中五个用户,我如何建立一个具有特征(特质存在)的用户列表?

ruby factory-bot

15
推荐指数
2
解决办法
8360
查看次数

Ruby排序(整数)"NilClass与3200的比较失败"

我想在rails应用程序中对记录进行排序:

@ebms = Ebm.all
@ebms.sort_by! {|u| u.number}
Run Code Online (Sandbox Code Playgroud)

u.number被定义为整数!问题是Rails无法与它进行比较nil:

comparison of NilClass with 32400 failed
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能逃避这个错误?

ruby sorting ruby-on-rails

11
推荐指数
2
解决办法
6227
查看次数

未定义的方法`paginate'

我正在尝试使用will_paginate gem但是出了点问题.我遇到了undefined method `paginate'错误.我读了很多问题并尝试了很多东西.这是我得到的:

这是我的LocationsController.rb:

def index
  @locations = Location.all    
  respond_to do |format|
    @locations = @locations.paginate(:page => params[:page], :per_page => 10) 
    format.html  #index.html.erb
    format.json { render json: @locations }
  end 
end
Run Code Online (Sandbox Code Playgroud)

这是我的will_paginate在我的行index.html.erb:

<%= will_paginate @locations %>
Run Code Online (Sandbox Code Playgroud)

这是错误:

undefined method `paginate' for #<Class:0xaa2e48c>
Run Code Online (Sandbox Code Playgroud)

我还在my中添加了require部分Gemfile:

gem "will_paginate", "~> 3.0.4", :require => nil
Run Code Online (Sandbox Code Playgroud)

这在我的结尾environment.rb:

require "will_paginate"`
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails will-paginate

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

确定程序是否在调试模式下运行

我使用RubyMine编写和调试我的Ruby 2.0代码.它为此目的使用ruby-debug-ide.我想知道程序是否在调试模式下运行.

我知道有Ruby $DEBUG全局变量,但据我所知,ruby-debug-ide没有改变它,因为它没有使用-druby标志.

如果我使用Rubymine调试我的文件,执行的命令如下所示:

/home/user/.rvm/rubies/ruby-2.0.0-p353/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/user/.rvm/gems/ruby-2.0.0-p353/gems/ruby-debug-ide-0.4.22/bin/rdebug-ide --disable-int-handler --port 37737 --dispatcher-port 47992 -- /home/user/file.rb
Run Code Online (Sandbox Code Playgroud)

我试图使用ARGV$0,以确定命令行是否包含字符串,'rdebug-ide'但是ARGV是一个空数组,$0只是'/home/user/file.rb',我如何获得RubyMine执行的完整命令行?

ruby ruby-debug

9
推荐指数
1
解决办法
802
查看次数

从父目录加载文件

我正在使用Ruby 1.8,我有要调用的脚本,但它在父文件夹中.以下是结构:

maindir/
neededscript.rb
  subdir/
    subdir2/
      myscript.rb
Run Code Online (Sandbox Code Playgroud)

我怎么neededscript.rb能从里面要求myscript.rb

ruby require ruby-1.8

8
推荐指数
3
解决办法
3581
查看次数

警告:已初始化常量VERIFY_PEER

当我尝试启动服务器时,我收到以下警告:

/Users/sumitkalra1984/MVP/config/initializers/devise.rb:5: warning: already initialized constant VERIFY_PEER   
Run Code Online (Sandbox Code Playgroud)

我的设计档案:

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE if Rails.env.development?  
Run Code Online (Sandbox Code Playgroud)

如何找到已定义常量的位置,以及如何覆盖该定义?

ruby-on-rails devise

8
推荐指数
1
解决办法
5437
查看次数

如何使用数组中的键初始化哈希?

如何使用以下数组中的键初始化哈希?

keys = [ 'a' , 'b' , 'c' ]
Run Code Online (Sandbox Code Playgroud)

期望的哈希h应该是:

puts h 
# { 'a' => nil , 'b' => nil , 'c' => nil }
Run Code Online (Sandbox Code Playgroud)

ruby hash

8
推荐指数
3
解决办法
3616
查看次数

在linux中使用sed命令执行cat命令

我有file.txt一些内容.我想搜索一个字符串file1.txt,如果该字符串匹配,我想用该字符串的内容替换该字符串file.txt.我怎样才能做到这一点?

我尝试过使用sed:

sed -e 's/%d/cat file.txt/g' file1.txt
Run Code Online (Sandbox Code Playgroud)

这是在搜索匹配的字符串file1.txt并用字符串替换它cat file.txt,但我想要的内容file.txt.

linux sed cat

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

无效的日期ArgumentError和有效日期的错误解析?

dates = ["11/12/08 10:47", "11/12/08 13:23", "11/12/08 13:30", 
         "11/25/08 19:21", "2/2/09 11:29", "11/12/08 15:00"] 
Run Code Online (Sandbox Code Playgroud)

这会抛出一个无效的参数错误:

dates.each do |date|
  d = Date.parse(date)
  d.mon
end
 #=> ArgumentError: invalid date
Run Code Online (Sandbox Code Playgroud)

但是取第一个日期dates,这是输出:

d = Date.parse('11/12/08 10:47')
puts d.mon
 #=> #<Date: 2011-12-08 ((2455904j,0s,0n),+0s,2299161j)> 
 #=> 12 but this should be 11
Run Code Online (Sandbox Code Playgroud)
  1. 在第一个例子中为什么我得到一个无效的ArgumentError?
  2. 在示例2中,为什么Date使用monday交换创建了对象?

ruby date

7
推荐指数
1
解决办法
8226
查看次数