这是我尝试过的:
1. gem install awesome_print
2. echo "require 'ap'" >> ~/.irbrc
3. chmod u+x ~/.irbrc
4. script/console
5. ap { :test => 'value' }
Run Code Online (Sandbox Code Playgroud)
结果:
NameError: undefined local variable or method `ap' for #
很确定这些测试工作正常.通过删除has_many:relationships上的dependent :: destroy选项以及user.rb中的has_many:reverse_relationships来解决它们.
想要分享我所做的事情以防其他人通过Michael Hartl的Rails教程第2版,第11章练习.
这个练习产生了一些问题(见本文的底部).如果有人能提供帮助,那就太好了.
第11章,练习1:
按照清单10.15中的示例,在关系模型(清单11.4和清单11.16)中添加依赖关系:destroy的测试.
这是我的测试: spec/models/user_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
subject { @user }
[...code omitted...]
describe "relationship associations" do
let(:other_user) { FactoryGirl.create(:user) }
before do
@user.save
@user.follow!(other_user)
other_user.follow!(@user)
end
it "should destroy associated relationships" do
relationships = @user.relationships
@user.destroy
relationships.should be_empty
end
it "should destroy associated reverse relationships" do
reverse_relationships = @user.reverse_relationships
@user.destroy
reverse_relationships.should be_empty
end
end
Run Code Online (Sandbox Code Playgroud)
这个练习产生了几个问题:
问题1: …
rails-console ruby-on-rails-3 railstutorial.org dependent-destroy
我正在寻找一种干净简单的方法在Rails控制台中打印包含2列的5行数据库的内容.
有任何想法吗?我用Google搜索,但没有找到太多.
在Rails控制台中工作时,我将一个非常长的哈希粘贴到控制台中,当我滚动它的底部时,它有令牌(END),但是我发现通过它的唯一方法是使用CTRL退出控制台+ Z.这违背了我使用控制台测试一些代码的目的.有没有其他方法可以通过该(END)令牌?
我目前有一个我创建的ActiveJob,并使用Sidekiq对其进行排队.我想调试这个工作,但是为了让我看到我编入其中的任何消息,我必须检查我的日志文件.我觉得能够puts在Rails控制台中查看我的工作信息会更方便.当我perform_later在rails控制台中运行该方法时,它只是将作业排队,我从未在控制台中看到这些消息.有没有办法让它在控制台中看到它们?
在 ruby 控制台中运行简单任务时遇到问题。如果我跑
user = User.find(10)
Run Code Online (Sandbox Code Playgroud)
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", "10"], ["LIMIT", 1]]
(Object doesn't support #inspect)
Run Code Online (Sandbox Code Playgroud)
我收到“对象不支持#inspect”错误。我的同事有完全相同的分支机构,没有问题。在其他分支上我也没有这个问题。肯定有一个结果,像这样运行就可以了。
user.first_name
=> "Tom"
Run Code Online (Sandbox Code Playgroud)
我什至删除了分支,重新下载,但仍然遇到同样的问题。已删除 gemfile,捆绑...尝试了我所知道的一切。我什至打开和关闭了笔记本电脑。
我经常需要使用Rails控制台rails c.然后我运行一些循环遍历模型记录的语句.我需要输出信息,但所有的SQL代码都会被遍布.喜欢:
Students.all.each {|s| puts s.inspect unless s.attendance};nil
Run Code Online (Sandbox Code Playgroud)
我把它nil放在最后,所以我不会得到所有学生的丑陋.这是输出:
Student Load (4.3ms) SELECT "students".* FROM "students"
Attendance Load (3.6ms) SELECT "attendances".* FROM "attendances" WHERE "attendances"."id" = 2694 LIMIT 1
Attendance Load (2.7ms) SELECT "attendances".* FROM "attendances" WHERE "attendances"."id" = 2695 LIMIT 1
Attendance Load (4.9ms) SELECT "attendances".* FROM "attendances" WHERE "attendances"."id" = 2689 LIMIT 1
#<Student id: 3, attendance_id: 2689, teacher_id: 6, began_at: "2013-05-21 19:16:37", finished_at: "2013-05-21 20:34:33", created_at: "2013-05-21 19:16:37", updated_at: "2013-05-21 20:34:33">
Attendance Load …Run Code Online (Sandbox Code Playgroud) ruby-on-rails irb rails-console ruby-on-rails-3 ruby-on-rails-4
在开发或生产中,我无法从控制台看到缓存中的任何内容。
对于开发,我打开了缓存并将其设置为内存存储,在生产中我使用 Heroku 上的 dalli gem 和 Memcachier。
我尝试的每个键都归零。
但是,在开发过程中,如果我在binding.pry之前的某个地方放入a Rails.cache.fetch,我可以在Rails.cache.read那里执行 a并看到返回的内容,如果是这样,则执行不会进入fetch's 块。
在控制台中,如果我尝试Rails.cache.read使用刚刚在pry断点控制台中返回缓存结果的相同键,我将一无所获。好像控制台有一个单独的缓存,仿佛从控制台我Rails.cache.write("whatever", "blah")和Rails.cache.read("whatever")我得到的回报“嗒嗒”,符合市场预期。
有没有办法从控制台试验正在运行的服务器的缓存?
我似乎无法在终端中运行 rails c。它不断给我这个错误
Loading development environment (Rails 4.2.0.beta2)
[1] pry(main)> Error: Input/output error - /dev/null
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:198:in `readline'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:198:in `block in input_readline'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:115:in `call'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:115:in `interruptible_region'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:197:in `input_readline'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:183:in `block in read_line'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:129:in `handle_read_errors'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:170:in `read_line'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:98:in `read'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:68:in `block in repl'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `loop'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `repl'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `block in start'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `call'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `__with_ownership'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:79:in `with_ownership'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `start'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:15:in `start'
/Users/Bito/.gem/ruby/2.0.0/gems/pry-0.10.1/lib/pry/pry_class.rb:169:in `start'
/Users/Bito/.gem/ruby/2.0.0/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:110:in `start'
/Users/Bito/.gem/ruby/2.0.0/gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:9:in `start'
/Users/Bito/.gem/ruby/2.0.0/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:68:in `console'
/Users/Bito/.gem/ruby/2.0.0/gems/railties-4.2.0.beta2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
/Users/Bito/.gem/ruby/2.0.0/gems/railties-4.2.0.beta2/lib/rails/commands.rb:17:in `<top (required)>'
/Users/Bito/.gem/ruby/2.0.0/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `require'
/Users/Bito/.gem/ruby/2.0.0/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:248:in `block in require'
/Users/Bito/.gem/ruby/2.0.0/gems/activesupport-4.2.0.beta2/lib/active_support/dependencies.rb:233:in `load_dependency' …Run Code Online (Sandbox Code Playgroud) 在我的 Rails 控制器中,在窥探会话中,我的params哈希值是nil. request.params具有预期的哈希值。
如果我注释掉该params = \xe2\x80\xa6行,params则恢复正常。
class UsersController < Clearance::UsersController\n skip_before_filter :verify_authenticity_token\n\n def update\n binding.pry\n params = params.require(:user).allow(:foo)\n end\nend\nRun Code Online (Sandbox Code Playgroud)\n\n可能是什么原因造成的?
\n