标签: ruby

diff一个ruby字符串或数组

如何在Ruby中进行两个字符串或数组的差异?

ruby diff

54
推荐指数
7
解决办法
4万
查看次数

Rails中每个视图的JavaScript文件

根据'不引人注目的JavaScript'建议,我想将我的JavaScript逻辑分成
单独的文件.但是我不知道如何组织它们.

我是不是该:

  1. 只需将所有应用程序javascript抛出到Application.js文件中并使用布局页面加载它?这是一个简单的方法,但我最终会得到一个膨胀的Application.js.有些用户可能只想访问几页,但整个文件会预先加载,这是不好的.
  2. 或者我应该为每个视图创建一个单独的javaScript文件并单独加载它们?这会产生一系列问题.如何将每个js文件链接到相应的视图?
    谢谢.

javascript ruby ruby-on-rails

54
推荐指数
3
解决办法
4万
查看次数

如何理解class_eval()和instance_eval()之间的区别?

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的上下文中计算字符串或块.这可以用于向类添加方法.

instance_eval的文档:

obj.instance_eval {| | block} => obj

在接收器(obj)的上下文中计算包含Ruby源代码或给定块的字符串.为了设置上下文,在代码执行时将变量self设置为obj,使代码可以访问obj的实例变量.

ruby class-method instance-method

54
推荐指数
3
解决办法
1万
查看次数

我们如何看Rails开发日志?

我的团队成员正在Windows XP上开发Rails应用程序.我们发现,当我们运行应用程序时,无论是在NetBeans中启动它还是打开控制台并调用script/server,Rails开发日志都不会滚动.只有Webrick启动消息.该应用程序肯定在运行,但是当我们在浏览器中点击各个页面时,我们没有看到任何日志记录输出.

当我在OS X系统上查看相同的应用程序时,日志记录输出按预期工作.

我确实确保它在Rails"开发"环境中运行.

有什么想法可以抑制日志记录?

是否存在会影响它的environment.rb文件的配置参数?

ruby windows logging ruby-on-rails git-bash

54
推荐指数
3
解决办法
7万
查看次数

跳过Enumerable#collect中的迭代

(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)

如果满足条件,nextcollect放入nil数组,而我正在尝试做的是,如果满足条件,则不在返回的数组中放置任何元素.这可能不调用delete_if { |x| x == nil }返回的数组吗?

(使用Ruby 1.8.7;我的代码摘录被大量抽象)

ruby enumerable

54
推荐指数
3
解决办法
3万
查看次数

Ruby on rails - 静态方法

我想要一个每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)

ruby oop static-methods

54
推荐指数
3
解决办法
6万
查看次数

为什么变量名不能以`?`结尾而方法名称可以?

方法名称可以以问号结尾 ?

def has_completed?
  return count > 10
end
Run Code Online (Sandbox Code Playgroud)

但变量名不能.

这是什么原因?变量名也以同样的方式结束不方便吗?鉴于我们通常无法foobar通过查看名称来判断方法还是变量foobar,为什么例外?情况呢?

我应该如何处理这个?也许总是使用hasis在代码中?

if process_has_completed
  ...
end

if user_is_using_console
  ...
end
Run Code Online (Sandbox Code Playgroud)

ruby

54
推荐指数
2
解决办法
1万
查看次数

如何在Ruby中重命名文件?

这是我的.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文件所在的位置.我想在不移动文件的情况下重新命名文件.

有关该怎么办的任何建议?

ruby file dir

54
推荐指数
3
解决办法
5万
查看次数

attr_accessor默认值

我正在使用rails,我想这样做attr_accessor :politics,默认设置为false.

有谁知道如何做到这一点,能够用简单的术语解释它吗?

ruby ruby-on-rails attr-accessor

54
推荐指数
1
解决办法
4万
查看次数

object.presence有什么意义?

在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 ruby-on-rails

54
推荐指数
4
解决办法
1万
查看次数