如何在rails控制台中进行VI风格的导航?
在我的 .bash_profile 中我这样做set -o vi,然后在我的终端中我喜欢 vi 风格的导航。我可以dd删除一行、cmd+$跳到行尾等等。
我想在 Rails 控制台中得到同样的东西?
我知道如何使用 ARGV 数组访问命令参数,但我遇到了问题。我有一个无法独立运行的脚本,需要在 Rails 控制台中运行。有没有办法在调用文件时传递参数?
load '/tmp/test.rb'
Run Code Online (Sandbox Code Playgroud)
我尝试将其放在引号内,放在引号外,一时兴起尝试<但无济于事。
感谢您提供任何帮助!
ruby command ruby-on-rails command-line-arguments rails-console
我想创建一个迁移来生成一个如下所示的模型:
# Table name: cities
#
# country_code :text
# created_at :datetime not null
# id :integer not null, primary key
# name :string
# updated_at :datetime not null
#
class City < ActiveRecord::Base
validates :name, presence: true, uniqueness: {:scope => :country_code,
message: "A name and country already exists for this entry" }
end
Run Code Online (Sandbox Code Playgroud)
如何创建独立迁移来创建此模型?
我能够:name在整个桌子上制作独一无二的:
rails g migration CreateCitites name:string:uniq country_code:text timezone:text
Run Code Online (Sandbox Code Playgroud)
我在创建:name相对于:country_code.
例子:
名称:悉尼,国家代码:澳大利亚
名称:悉尼,国家代码:德国
应该允许
名称:悉尼,国家代码:澳大利亚
名称:悉尼,国家代码:澳大利亚
不应该被允许
我需要编写一个 bash 脚本来在我的 rails 控制台中运行命令,命令是: Station.create(......)
#!/bin/bash
rails console
Run Code Online (Sandbox Code Playgroud)
在这行之后,我没有任何想法。我试过了echo "Station.create(...),但没有帮助
我试图检查对话中的最后一条消息是否已经过去 24 小时,但我总是收到错误消息
message_tag= conversation.messages.incoming.last.created_at > 24.hours.ago
Run Code Online (Sandbox Code Playgroud)
即使我已将创建时间更改为 25.hours.agomessage.created_at=25.hours.ago
这可能是什么原因造成的?
rails-project git:creating-models ? rails console
Loading development environment (Rails 3.2.1)
Couldn't load Wirble: cannot load such file -- wirble
irb(main):001:0>
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,没有任何相关的东西出现..我不知道这是否有帮助
rails-project git:creating-models ? irb
>> puts $:
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/gems/1.9.1/gems/wirble-0.1.3/lib
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/site_ruby/1.9.1
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/site_ruby/1.9.1/x86_64-darwin11.2.0
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/site_ruby
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/vendor_ruby/1.9.1
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin11.2.0
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/vendor_ruby
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1
/usr/local/Cellar/ruby/1.9.3-p0/lib/ruby/1.9.1/x86_64-darwin11.2.0
Run Code Online (Sandbox Code Playgroud)
Ruby版本:
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]
Run Code Online (Sandbox Code Playgroud)
我正在使用OSX,而不是Ubuntu(在我看到的每个谷歌搜索中似乎都是这个问题的根源)
有时当我在rails控制台中工作时,我发现我想在调试器中逐步执行特定方法(来自我的rails应用程序).在过去,我通过在方法的源代码中临时添加调试器语句,然后从控制台调用该方法来完成此操作.
有没有一种方法可以从控制台"进入"一个方法,而无需编辑其源代码?
这在共享开发服务器上会特别好用,因此我不需要使用vi引入随机调试器语句,并记得稍后删除它们.
我尝试了以下但不出意外它不起作用:
$ rails c --debugger
=> Debugger enabled
Loading development environment (Rails 3.2.13)
irb(main):001:0> def startdebug
irb(main):002:1> debugger
irb(main):003:1> MyModel.last.my_method
irb(main):004:1> end
=> nil
irb(main):005:0> startdebug
Run Code Online (Sandbox Code Playgroud)
它说
*** No sourcefile available for (irb)
Run Code Online (Sandbox Code Playgroud)
很快我终于通过irb代码而不是代码my_method.
当我在我当前的笔记本电脑上使用rails控制台时(在任何rails项目上),当控制台启动时出现以下错误.
Rails console error: Error loading ~/.pryrc: Command: `continue` not found
Run Code Online (Sandbox Code Playgroud)
控制台仍然正常加载和运行,但我似乎无法弄清楚错误的原因.
这是.pryrc的内容.
Pry.config.pager = false
Pry.config.color = true
Pry.commands.alias_command 'c', 'continue'
Pry.commands.alias_command 's', 'step'
Pry.commands.alias_command 'n', 'next'
Run Code Online (Sandbox Code Playgroud)
如果我删除第三行并运行rails控制台,错误我得到一个类似的错误,引用'step'代替.该错误不会影响我的故障排除能力,但我真的很想了解潜在的问题.
当我打开现有应用程序的控制台并输入:
2.1.1 :001 > User.first
User Load (17.6ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: xxxx .... >
Run Code Online (Sandbox Code Playgroud)
下次输入查询:
2.1.1 :002 > User.first
User Load (0.8ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: xxxx .... >
Run Code Online (Sandbox Code Playgroud)
您可以看到rails查询数据库所用的时间之间的差异.是否可以在控制台中使用缓存.这在运行应用程序中的表现如何.它是否有更多的时间,甚至是缓存,它究竟是在做什么的.
我有一个这样的辅助方法:
module PostsHelper
def foo
"foo"
end
end
Run Code Online (Sandbox Code Playgroud)
在 rails 控制台中,我检查了函数,然后将文本更改"foo"为"bar",然后reload!是控制台,但helpers.foo仍然没有返回"bar"。
也许 Helper 对象已经像这篇文章一样在控制台中创建了,我不确定。 Rails 控制台:重新加载!不反映模型文件的变化?可能的原因是什么?
只有我想知道如何在 rails 控制台中使用 helper 方法。你能告诉我怎么做吗?