标签: ruby

如何在Ruby脚本中运行Rake任务?

我有一个RakefileRake任务,我通常会从命令行调用:

rake blog:post Title
Run Code Online (Sandbox Code Playgroud)

我想编写一个多次调用Rake任务的Ruby脚本,但我看到的唯一解决方案是使用``(反引号)或system.

这样做的正确方法是什么?

ruby rake command-line-interface

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

Ruby/Rails中有没有办法执行字符串中的代码?

所以我有一个不同代码示例的数据库(读取片段).代码示例由用户创建.Rails有没有办法执行它?

例如,我在我的数据库中有以下代码(id = 123):

return @var.reverse
Run Code Online (Sandbox Code Playgroud)

有没有办法让我执行它?就像是:

@var = 'Hello'
@result = exec(CodeSample.find(123))
Run Code Online (Sandbox Code Playgroud)

所以结果就是'olleH'

ruby scripting ruby-on-rails

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

如何在Ruby on Rails中为相关对象创建删除链接?

所以,假设我有帖子和评论,而节目的网址是/posts/1/comments/1.我想在comments controller destroy方法中创建一个删除该注释的链接.我怎么做?

ruby ruby-on-rails hyperlink

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

为什么显性回报会对Proc产生影响?

def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  b = Proc.new { "return from bar from inside proc" }
  b.call # control leaves bar here
  return "return from bar" 
end

puts foo # prints "return from foo from inside proc" 
puts bar # prints "return from bar" 
Run Code Online (Sandbox Code Playgroud)

我认为这个return关键字在Ruby中是可选的,return无论你是否请求它,你总是在想.鉴于这种情况,我觉得很奇怪,foobar有不同的输出由事实来确定foo包含一个明确的returnProc …

ruby return proc-object

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

Ruby,生成随机的十六进制颜色

如何使用红宝石生成随机十六进制颜色?

ruby

51
推荐指数
4
解决办法
2万
查看次数

删除/取消定义类方法

您可以为类动态定义类方法,如下所示:

class Foo
end

bar = %q{def bar() "bar!" end}
Foo.instance_eval(bar)
Run Code Online (Sandbox Code Playgroud)

但是你如何做相反的事情:删除/取消定义一个类方法?我怀疑Module remove_methodundef_method方法可能可以用于此目的,但我在谷歌搜索几个小时之后看到的所有示例都是用于删除/取消定义实例方法,而不是类方法.或者也许你可以传递一种语法instance_eval来做到这一点.

提前致谢.

ruby metaprogramming

51
推荐指数
4
解决办法
2万
查看次数

如何修复错误的URI不是URI

我正在使用ruby版本1.9.3,我喜欢从下面的视频网址获取主机名,

我试过代码

require 'uri'
url = "https://ferrari-view.4me.it/view-share/playerp/?plContext=http://ferrari-%201363948628-stream.4mecloud.it/live/ferrari/ngrp:livegenita/manifest.f4m&cartellaConfig=http://ferrari-4me.weebo.it/static/player/config/&cartellaLingua=http://ferrari-4me.weebo.it/static/player/config/&poster=http://pusher.newvision.it:8080/resources/img1.jpg&urlSkin=http://ferrari-4me.weebo.it/static/player/swf/skin.swf?a=1363014732171&method=GET&target_url=http://ferrari-4me.weebo.it/static/player/swf/player.swf&userLanguage=IT&styleTextColor=#000000&autoPlay=true&bufferTime=2&isLive=true&highlightColor=#eb2323&gaTrackerList=UA-23603234-4"  
puts URI.parse(url).host  
Run Code Online (Sandbox Code Playgroud)

它抛出异常URI :: InvalidURIError:错误的URI(不是URI?):

我尝试使用编码URL然后解析如下

puts URI.parse(URI.parse(url)).host
Run Code Online (Sandbox Code Playgroud)

它抛出异常相同 URI::InvalidURIError: bad URI(is not URI?)

但上面的代码适用于以下URL.

url = http://www.youtube.com/v/GpQDa3PUAbU?version=3&autohide=1&autoplay=1

如何解决这个问题?任何建议请.谢谢

ruby uri ruby-on-rails-3

51
推荐指数
2
解决办法
7万
查看次数

我如何使用独角兽作为"rails s"?

一个新的Rails项目Gemfile显示:

# Use unicorn as the app server
gem 'unicorn'
Run Code Online (Sandbox Code Playgroud)

rails s --help 说明:

Usage: rails server [mongrel, thin, etc] [options]
Run Code Online (Sandbox Code Playgroud)

然而,做:

rails s unicorn
Run Code Online (Sandbox Code Playgroud)

我明白了:

/Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:63:in `require': cannot load such file -- rack/handler/unicorn (LoadError)
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:63:in `try_require'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/handler.rb:16:in `get'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/rack-1.4.5/lib/rack/server.rb:272:in `server'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/rails/commands/server.rb:59:in `start'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/rails/commands.rb:55:in `block in <top (required)>'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/rails/commands.rb:50:in `tap'
from /Users/patrick/.rvm/gems/ruby-1.9.3-head@keynote/gems/railties-3.2.13/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我过去曾在其他项目中使用过独角兽,但总是必须运行unicorn命令并指定一个有点痛苦的配置文件.我想知道如何通过使用简单地使它工作rails s...

这可能吗?

ruby ruby-on-rails unicorn

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

如何一次获取多个哈希值?

什么是更短的版本?:

from = hash.fetch(:from)
to = hash.fetch(:to)
name = hash.fetch(:name)
# etc
Run Code Online (Sandbox Code Playgroud)

请注意fetch,如果密钥不存在,我想引发错误.

必须有更短的版本,例如:

from, to, name = hash.fetch(:from, :to, :name) # <-- imaginary won't work
Run Code Online (Sandbox Code Playgroud)

如果需要,可以使用ActiveSupport.

ruby hash ruby-on-rails destructuring

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

未加载库:/opt/local/lib/libssl.1.0.0.dylib(LoadError)

我刚刚发现我已经不能再进行gem push …了一些挖掘工作,这使我需要更新我的RVM SSL证书.

我跑了,rvm osx-ssl-certs status all但那给了我:

/Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': dlopen(/Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle, 9): Library not loaded: /opt/local/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle
  Reason: image not found - /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/x86_64-darwin12.4.0/openssl.bundle
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/openssl.rb:17:in `<top (required)>'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/davesag/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
Certificates for /usr/local/etc/openssl/cert.pem: Up to date.
Certificates for : Old.
Certificates for /etc/openssl/cert.pem: Up to date.
Run Code Online (Sandbox Code Playgroud)

rvm -v 显示我正在运行最新的RVM(截至今天)

rvm 1.22.15 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
Run Code Online (Sandbox Code Playgroud)

奇怪的是,我不知道为什么它指的ruby-2.0.0-p195不过是rvm list给 …

ruby ssl rvm

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