我想实现一个类似于标准库定义的调试构建器的构建器.它们使用如下结构定义:
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并且 …
我正在使用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,如果我想用照片创建其中五个用户,我如何建立一个具有特征(特质存在)的用户列表?
我想在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)
我该怎么做才能逃避这个错误?
我正在尝试使用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) 我使用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 1.8,我有要调用的脚本,但它在父文件夹中.以下是结构:
maindir/
neededscript.rb
subdir/
subdir2/
myscript.rb
Run Code Online (Sandbox Code Playgroud)
我怎么neededscript.rb能从里面要求myscript.rb?
当我尝试启动服务器时,我收到以下警告:
/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)
如何找到已定义常量的位置,以及如何覆盖该定义?
如何使用以下数组中的键初始化哈希?
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) 我有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.
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)
Date使用mon和day交换创建了对象?