我是Ruby on Rails的新手,我正在使用RVM来管理Ruby版本.
我的笔记本电脑安装了Ruby1.8.7,但我的项目是使用RVM,Ruby1.9.3和Rails 3.2.11.
我无法运行rails c或不运行rails console它给我以下错误:
/home/phil/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/irb/completion.rb:9:in `require': cannot load such file -- readline (LoadError)
from /home/phil/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
from /home/phil/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.11/lib/rails/commands/console.rb:3:in `require'
from /home/phil/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.11/lib/rails/commands/console.rb:3:in `<top (required)>'
from /home/phil/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.11/lib/rails/commands.rb:38:in `require'
from /home/phil/.rvm/gems/ruby-1.9.3-p392/gems/railties-3.2.11/lib/rails/commands.rb:38:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud) 有没有办法减少rails控制台中错误报告的冗长程度?具体来说,关闭堆栈跟踪显示?这在大多数时候都没用,而且当我遇到愚蠢的手指时,彻底烦人.
当我输入类似的内容时:
MyModel.vtrsyr
Run Code Online (Sandbox Code Playgroud)
我不需要堆栈跟踪来告诉我没有'vtrsyr'方法
Rails 控制台似乎将其字符输出限制为大约 880 个字符。我如何消除这个限制?
打印大型对象或数据库中的文本字段会给出如下输出:
=> #<User id: ....
system_password: ni
Run Code Online (Sandbox Code Playgroud)
(...为了简洁而插入。输出包含大量文本。)
您可以看到输出被截断/限制/限制,因此“ni”之后不会显示任何内容(应该至少是“l”,表示“nil”)。
这太烦人了。它不允许我完全检查数据库中包含大量文本的字符串/文本字段。
我认为它一定是某个地方的设置,但我似乎找不到它。
如何消除此限制,以便我可以看到所有文本输出?
我在Postgresql中有一个名为monthly_trips的表.有一行值为id = 3&al = 107.415.我的问题是当我尝试访问rails中"al"列的值时.使用Rails控制台和下面的代码我得到的结果是6154.426156397738.我不知道是什么产生了这个更大的数字(确切地说是57.295779513倍).任何帮助将不胜感激!如果您需要更多信息,请与我们联系.
trip = MonthlyTrip.find(3)
result = trip.al
Run Code Online (Sandbox Code Playgroud)
monthly_trip.rb
class MonthlyTrip < ActiveRecord::Base
attr_accessible :al, :month, :vehicle_id, :year
belongs_to :vehicle
end
Run Code Online (Sandbox Code Playgroud)
psql输出(选择id,来自monthly_trips,其中id = 3;)
id | al
----+---------
3 | 107.415
(1 row)
Run Code Online (Sandbox Code Playgroud)
psql输出(\ d monthly_trips)
Table "public.monthly_trips"
Column | Type | Modifiers
------------+-----------------------------+------------------------------------------------------------
id | integer | not null default nextval('monthly_trips_id_seq'::regclass)
vehicle_id | integer |
year | integer |
month | integer |
al | numeric(9,3) |
ak | numeric(9,3) |
az | numeric(9,3) |
ar …Run Code Online (Sandbox Code Playgroud) 我想定义类变量test,threshold
这样我就可以Order.test, Order.threshold在我的Rails应用程序中使用 了
但是在使用rails控制台时我无法访问类变量
我必须误解一些问题,问题出在哪里?谢谢.
class Order < ActiveRecord::Base
@@test=123
@@threshold = {
VIP: 500,
PLATINUM: 20000
}
Run Code Online (Sandbox Code Playgroud)
这里是 rails console
irb(main):001:0> Order.class_variables
=> [:@@test, :@@threshold]
irb(main):002:0> Order.test
NoMethodError: private method `test' called for #<Class:0x007fe5a63ac738>
Run Code Online (Sandbox Code Playgroud) 令人敬畏的打印通常在Rails中完美适用于我.
但是当ap Post.all在Rails控制台中进行操作时,我只获得标准的全线输出.
它与返回的ActiveRecord_Relation类或其他东西有关,因为当返回一个数组时,就像在ap Post.all.each {|p| p},Awesome Print这样做.
我正在 Rails 控制台中寻找一种方法来查找以特定字符串结尾的任何值,并从值中删除该字符串。
大致如下:
Model.all.each{|x| x.duration.slice!(" weeks")}.where("duration IS NOT NULL")
Run Code Online (Sandbox Code Playgroud)
因此,诸如“47 周”之类的值只是变成“47”,但没有 Slice 方法ActiveRecord/ActiveModel,而且我不知道等效的方法。
有任何想法吗??
提前致谢...
我正在尝试调试secrets.yml加载环境变量的问题,通过在开发中设置一些环境变量并运行rails c来检查事物.当我以Rails.applications.secrets这种方式加载时,它没有拾取我设置的任何环境变量(即SECRET_KEY_BASE)
如果我使用相同的环境变量设置运行应用程序,它会很好地选择它们(我使用RubyMine来运行应用程序,但是rails c从终端运行)
在我的rails控制台中,我可以看到我设置的环境变量ENV['SECRET_KEY_BASE'],但它没有显示出来Rails.application.secrets.为什么?
ruby-on-rails environment-variables rails-console ruby-on-rails-5
在我的Character模型中,我添加了:
character.rb
before_save do
self.profile_picture_url = asset_path('icon.png')
end
Run Code Online (Sandbox Code Playgroud)
但是,对于数据库中已存在的所有字符,它们profile_picture_url是nil.因此,我想进入控制台并遍历所有这些并设置它.在控制台我试过:
Character.find_each do |c|
c.profile_picture_url = asset_path('icon.png')
end
Run Code Online (Sandbox Code Playgroud)
但是这给出了错误:
NoMethodError: undefined method `asset_path' for main:Object
Run Code Online (Sandbox Code Playgroud)
我希望我已经充分地传达了我想要实现的目标.我哪里错了?
我有一个名为 Dish 的模型,它的属性成本为 float 类型。我已将精度设置为 15,小数位数设置为 2。问题出在 Rails 控制台中,成本值以科学计数法显示。
cost: 0.102e2
如何以小数形式显示?