标签: ruby

定义一个Ruby中的闭包方法

我正在ruby中的对象中重新定义一个方法,我需要将新方法作为闭包.例如:

def mess_it_up(o)
  x = "blah blah"

  def o.to_s
    puts x  # Wrong! x doesn't exists here, a method is not a closure
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我定义一个Proc,它就是一个闭包:

def mess_it_up(o)
  x = "blah blah"

  xp = Proc.new {||
    puts x  # This works
  end

  # but how do I set it to o.to_s.

  def o.to_s
    xp.call  # same problem as before
  end
end
Run Code Online (Sandbox Code Playgroud)

有什么想法怎么做?

谢谢.

ruby closures

9
推荐指数
2
解决办法
2845
查看次数

Ruby获取二维数组中的对角元素

我正在尝试使用2D ruby​​数组时遇到一些问题,当我进行数组切片时,我的LOC减少了很多.所以,例如,

require "test/unit"

class LibraryTest < Test::Unit::TestCase

  def test_box
    array = [[1,2,3,4],[3,4,5,6], [5,6,7,8], [2,3,4,5]]
    puts array[1][2..3] # 5, 6
    puts array[1..2][1] # 5, 6, 7, 8
  end
end
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法获得对角切片?让我们说我想从[0,0]开始并想要一个3的对角切片.然后我会得到[0,0],[1,1],[2,2]的元素,我会得到一个类似的数组[1,4,7]例如上面.是否有任何神奇的单行红宝石代码可以实现这一目标?3次做{某些神奇的东西?}

ruby multidimensional-array

9
推荐指数
2
解决办法
5023
查看次数

适用于Windows的优秀且免费的Ruby编辑器?

可能重复:
您更喜欢Ruby IDE?

什么是Windows的优秀和免费的Ruby编辑器?谢谢!

ruby

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

在Rails上创建博客ruby - 问题删除评论

因为我总是打字,所以我对轨道和编程很新,所以很容易.提前致谢.

我已成功地遵循Ryan Bates的初始教程,了解如何在15分钟内构建博客.如果您不知道本教程将指导您创建帖子并允许对这些帖子发表评论.它甚至通过在帖子show.html.erb页面上创建和显示评论来介绍AJAX.一切都很棒.

这是打嗝,当Ryan带你通过本教程时他会清除comments_controller并只显示创建注释的代码.我试图添加编辑和销毁评论的能力.似乎无法让它工作,不断删除实际的帖子而不是评论(日志显示我一直向PostsController发送DELETE请求).这是我的代码:

class CommentsController < ApplicationController
 def create
   @post = Post.find(params[:post_id])
   @comment = @post.comments.create!(params[:comment])
   respond_to do |format|
     format.html { redirect_to @post }
     format.js
   end
 end

 def destroy
    @comment = Comment.find(params[:id])
    @comment.destroy

    respond_to do |format|
      format.html { redirect_to(posts_url) }
      format.xml  { head :ok }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

/views/posts/show.html.erb

    <%= render :partial => @post %>

    <p>
        <%= link_to 'Edit', edit_post_path (@post) %> |
        <%= link_to 'Destroy', @post, :method => :delete, :confirm => "Are you sure?" %> |
        <%= …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

9
推荐指数
1
解决办法
3024
查看次数

在Sinatra中,如何在公共文件夹的子目录中提供静态index.html文件?

可能重复:
使用Sinatra提供静态文件

我注意到Sinatra无法识别公用文件夹子目录中的index.html文件,并在url指向目录时返回错误而未指定文件名.

例如,如果用户输入"www.mydomain.com/subdiretory/"之类的网址,则Sinatra无法识别该目录中是否存在index.html文件.

我的公用文件夹中有数百个子目录,因此无法在代码中指定每个子目录(并且子目录的数量不断增长).

如果url指向没有文件名的目录,如果公共文件夹的子目录中有index.html文件,我怎么能告诉Sinatra单独离开我的Web服务器(Apache)(到服务器index.html文件)?

ruby static-files sinatra

9
推荐指数
0
解决办法
5909
查看次数

编程技巧:如何创建一个简单的纸牌游戏

当我学习Ruby语言时,我越来越接近实际的编程.我在想创造一个简单的纸牌游戏.我的问题不是面向Ruby,但我确实想知道如何用真正的OOP方法解决这个问题.在我的纸牌游戏中,我希望有四个玩家,使用标准牌组,52张牌,没有笑话/通配符.在游戏中,我不会将ace用作双卡,它始终是最高卡.

所以,我想知道的编程问题如下:

  1. 如何对卡片组进行分类/随机化?有四种类型,每种类型有13个值.最终只能有唯一值,因此选择随机值可能会生成重复值.

  2. 我怎样才能实现简单的AI?由于有大量的纸牌游戏,有人会想出这部分,所以参考会很棒.

我是一个真正的Ruby nuby,我的目标是学习解决问题,所以伪代码会很棒,只是为了理解如何以编程方式解决问题.如果不清楚,我为我的语法和写作风格道歉,因为它不是我的母语.

此外,指向解释此类挑战的网站的指针将是一个很好的资源!

感谢您的意见,解答和反馈!

ruby language-agnostic algorithm artificial-intelligence

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

将简单的sinatra应用程序转换为静态html页面的更好方法是什么?

我的一个朋友要求创建一个静态网站,我发现使用Sinatra制作这样的网站是一种纯粹的快乐.我刚写了这样的所有路线:

get '/index.html' do
  haml :index
end

get '/app.css' do
  sass :app
end
....
Run Code Online (Sandbox Code Playgroud)

所以我能够使用布局,haml和sass来快速将网站放在一起.

创建我使用的静态站点

wget -r -l2 http://localhost:4567
Run Code Online (Sandbox Code Playgroud)

哪个确实工作得很好,但我想有一个更好的方法从Sinatra代码创建一个静态网站?

html ruby sinatra

9
推荐指数
1
解决办法
1092
查看次数

Jruby Gems-in-a-jar问题

我试图在ruby中编写一些代码(使用jruby),用jrubyc编译成java字节码,并部署到远程机器上,它将在JVM上运行(没有可用的ruby).

只要我乐意坚持标准的jruby库,一切都很好.正如在jruby网站上所解释的,我只是将jruby-complete.jar库复制到远程机器并在运行时将其包含在类路径中.我解雇我编译的脚本,它的工作原理:很酷!

当我需要一些其他库(通常是rubygems)来运行我的脚本时,问题就开始了.
我知道很酷的东西,比如rawr,我成功测试了 - 把你所需要的东西放在一个包中.然而,这不是我正在寻找的解决方案:我将有许多小脚本独立运行,我不希望它们中的每一个都增长到至少10 MB只是因为我疯狂地在每个中包含jruby-complete.jar他们.

我想要的是为我需要使用的每个库编译一个.jar,将它们全部放在远程机器上的公共文件夹中,并在运行我编译的jruby脚本时在运行时将它们包含在类路径中JVM.
这就是说,我试着按照这里的说明进行操作:http: //blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
我尝试了完全显示的例子在那里,有"慢性"宝石.一步一步走:

  1. 在本地安装gem:java -jar jruby-complete-1.1.6.jar -S gem install -i ./chronic chronic --no-rdoc --no-ri
  2. 将它包装成罐子:jar cf chronic.jar -C chronic.
  3. 编写两行测试脚本,将其保存为testt.rb:

    需要'慢性'
    Chronic.parse('明天')

  4. 编译:jrubyc testt.rb

  5. 使用以下命令运行生成的java类testt.class(将jruby-complete.jar和chronic.jar放在与java类相同的文件夹中):java -cp.:/ jruby-complete.jar:./ chronic.jar testt

我收到以下错误:

异常在线程"主要"文件:/Users/ave2/NetBeansProjects/jrubywatir/lib/jruby-complete.jar /METAINF/jruby.home/lib/ruby/site_ruby/shared/builtin/core_ext/symbol.rb:1:在`const_missing'中:
来自testt.rb的未初始化常量Chronic(NameError):2
...内部jruby堆栈
从Module.const_missing(testt.rb:2)中
脱离(未知).(未知)(:1)

我真的不明白我做错了什么,我完全坚持这个.我是Ruby中的菜鸟,更习惯Python:不要错过转换异教徒的机会!:-) 谢谢.

ruby rubygems jruby gems-in-a-jar

9
推荐指数
1
解决办法
3267
查看次数

如何从rake任务启动IRB控制台?

我正在尝试编写一个rake任务,它将设置一个镜像我的项目的环境.

task :environment do 
  require 'rubygems'
  require 'sequel'
  # require 'my_projects_special_files'
end

task :foo => [:environment] do
  require 'irb'
  IRB.start
end
Run Code Online (Sandbox Code Playgroud)

导致irb抱怨"foo"不存在(任务的名称)

10:28:01:irb_test >> rake foo --trace
(in /Users/mwlang/projects/personal/rake/irb_test)
** Invoke foo (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute foo
rake aborted!
No such file or directory - foo
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize'
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `open'
/opt/local/lib/ruby/1.8/irb/input-method.rb:68:in `initialize'
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `new'
/opt/local/lib/ruby/1.8/irb/context.rb:80:in `initialize'
/opt/local/lib/ruby/1.8/irb.rb:92:in `new'
/opt/local/lib/ruby/1.8/irb.rb:92:in `initialize'
/opt/local/lib/ruby/1.8/irb.rb:57:in `new'
/opt/local/lib/ruby/1.8/irb.rb:57:in `start'
/Users/mwlang/projects/personal/rake/irb_test/Rakefile:9

ruby rake irb

9
推荐指数
1
解决办法
5139
查看次数

在Ruby on Rails中搜索 - 如何搜索输入的每个单词而不是确切的字符串?

我已经在rails上构建了一个带ruby的博客应用程序,我正在尝试实现搜索功能.博客应用程序允许用户标记帖子.标签是在自己的表格中创建的belong_to :post.创建标记时,标记表中的记录也是如此,其中标记的名称为tag_name并由post_id关联.标签是字符串.

我试图允许用户以任何顺序搜索任何单词tag_name.这就是我的意思.让我们说一个特定的帖子有一个标签是'红宝石代码控制器'.在我当前的搜索功能中,如果用户搜索"ruby","ruby code"或"ruby code controller",则会找到该标记.如果用户键入'ruby controller',则无法找到.

基本上我所说的是我希望在搜索中输入的每个单词都被搜索,而不一定是输入到搜索中的"字符串".

我一直在尝试提供多个文本字段以允许用户输入多个单词,并且还在使用下面的代码,但似乎无法完成上述操作.我是ruby和rails的新手很抱歉,如果这是一个明显的问题,在安装gem或插件之前,我想我会检查是否有一个简单的修复.这是我的代码:

查看:/views/tags/index.html.erb

<% form_tag tags_path, :method => 'get' do %>
    <p>
      <%= text_field_tag :search, params[:search], :class => "textfield-search" %>
      <%= submit_tag "Search", :name => nil, :class => "search-button" %>
    </p>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

TagsController

 def index
    @tags = Tag.search(params[:search]).paginate :page => params[:page], :per_page => 5
    @tagsearch = Tag.search(params[:search])
    @tag_counts = Tag.count(:group => :tag_name, 
       :order => 'count_all DESC', :limit => 100)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml …
Run Code Online (Sandbox Code Playgroud)

ruby search ruby-on-rails

9
推荐指数
1
解决办法
9319
查看次数