根据'不引人注目的JavaScript'建议,我想将我的JavaScript逻辑分成
单独的文件.但是我不知道如何组织它们.
我是不是该:
Foo = Class.new
Foo.class_eval do
def class_bar
"class_bar"
end
end
Foo.instance_eval do
def instance_bar
"instance_bar"
end
end
Foo.class_bar #=> undefined method ‘class_bar’ for Foo:Class
Foo.new.class_bar #=> "class_bar"
Foo.instance_bar #=> "instance_bar"
Foo.new.instance_bar #=> undefined method ‘instance_bar’ for #<Foo:0x7dce8>
Run Code Online (Sandbox Code Playgroud)
只是基于方法的名称,我希望class_eval允许你向Foo和instance_eval添加一个类方法,以允许你向Foo添加一个实例方法.但他们似乎反其道而行之.
在上面的例子中,如果你在Foo类上调用class_bar,你会得到一个未定义的方法错误,如果你在Foo.new返回的实例上调用instance_bar,你也会得到一个未定义的方法错误.这两个错误似乎都与对class_eval和instance_eval应该做什么的直观理解相矛盾.
这些方法之间有什么区别?
class_eval的文档:
mod.class_eval(string [,filename [,lineno]])=> obj
在mod的上下文中计算字符串或块.这可以用于向类添加方法.
obj.instance_eval {| | block} => obj
在接收器(obj)的上下文中计算包含Ruby源代码或给定块的字符串.为了设置上下文,在代码执行时将变量self设置为obj,使代码可以访问obj的实例变量.
我的团队成员正在Windows XP上开发Rails应用程序.我们发现,当我们运行应用程序时,无论是在NetBeans中启动它还是打开控制台并调用script/server,Rails开发日志都不会滚动.只有Webrick启动消息.该应用程序肯定在运行,但是当我们在浏览器中点击各个页面时,我们没有看到任何日志记录输出.
当我在OS X系统上查看相同的应用程序时,日志记录输出按预期工作.
我确实确保它在Rails"开发"环境中运行.
有什么想法可以抑制日志记录?
是否存在会影响它的environment.rb文件的配置参数?
(1..4).collect do |x|
next if x == 3
x + 1
end # => [2, 3, nil, 5]
# desired => [2, 3, 5]
Run Code Online (Sandbox Code Playgroud)
如果满足条件,next则collect放入nil数组,而我正在尝试做的是,如果满足条件,则不在返回的数组中放置任何元素.这可能不调用delete_if { |x| x == nil }返回的数组吗?
(使用Ruby 1.8.7;我的代码摘录被大量抽象)
我想要一个每5分钟执行一次的方法,我为ruby(cron)实现了.但它不起作用.我认为我的方法无法访问.我想要执行的方法位于一个类中.我想我必须将该方法设为静态,以便我可以访问它MyClass.MyMethod.但我找不到合适的语法,或者我找错了地方.
Schedule.rb
every 5.minutes do
runner "Ping.checkPings"
end
Run Code Online (Sandbox Code Playgroud)
Ping.rb
def checkPings
gate = Net::Ping::External.new("10.10.1.1")
@monitor_ping = Ping.new()
if gate.ping?
MonitorPing.WAN = true
else
MonitorPing.WAN = false
end
@monitor_ping.save
end
Run Code Online (Sandbox Code Playgroud) 方法名称可以以问号结尾 ?
def has_completed?
return count > 10
end
Run Code Online (Sandbox Code Playgroud)
但变量名不能.
这是什么原因?变量名也以同样的方式结束不方便吗?鉴于我们通常无法foobar通过查看名称来判断方法还是变量foobar,为什么例外?情况呢?
我应该如何处理这个?也许总是使用has或is在代码中?
if process_has_completed
...
end
if user_is_using_console
...
end
Run Code Online (Sandbox Code Playgroud) 这是我的.rb文件:
puts "Renaming files..."
folder_path = "/home/papuccino1/Desktop/Test"
Dir.glob(folder_path + "/*").sort.each do |f|
filename = File.basename(f, File.extname(f))
File.rename(f, filename.capitalize + File.extname(f))
end
puts "Renaming complete."
Run Code Online (Sandbox Code Playgroud)
文件从其初始目录移动到.rb文件所在的位置.我想在不移动文件的情况下重新命名文件.
有关该怎么办的任何建议?
我正在使用rails,我想这样做attr_accessor :politics,默认设置为false.
有谁知道如何做到这一点,能够用简单的术语解释它吗?
在Rails文档中,为该方法提供的示例object.presence是:
region = params[:state].presence || params[:country].presence || 'US'
Run Code Online (Sandbox Code Playgroud)
但这不等于:
region = params[:state] || params[:country] || 'US'
Run Code Online (Sandbox Code Playgroud)
有什么用presence?
ruby ×10
class-method ×1
diff ×1
dir ×1
enumerable ×1
file ×1
git-bash ×1
javascript ×1
logging ×1
oop ×1
windows ×1