Tag: ruby

如何读取用户上传的文件,而不保存到数据库

我希望能够读取用户上传的XML文件(小于100kb),但不必先将该文件保存到数据库。 我不需要通过当前操作的文件(其内容被parsing并添加到数据库;但是,parsing文件不是问题)。 由于本地文件可以被读取: File.read("export.opml") 我想为刚刚创build一个file_field:uploaded_file,然后尝试读取它 File.read(params[:uploaded_file]) 但所有这一切是抛出一个TypeError(不能将HashWithIndifferentAccess转换为string)。 我真的已经尝试了很多不同的东西(包括从/ tmp目录中读取),但是没有一个能够工作。 我希望我的问题简洁并不掩盖我自己努力解决这个问题的努力,但是我不想用百种方法来污染这个问题,不知道怎么做。 非常感谢任何人在钟声中。 这是我的看法: <% form_for(:uploaded_file, @feed, :url => {:action=>'parse'}, :html=> {:multipart=>true}) do |f| %> <p> <%= f.label :uploaded_file, 'Upload your file.' %><br /> <%= f.file_field :uploaded_file %> </p> <p><%= f.submit 'upload' %></p> <% end %> 我设置了一个处理file_field上传的自定义操作(upload),在提交之后,它被传递给另一个自定义操作(parse)进行处理。 这可能是我的问题的一部分?

如何运行一个单一的testing在RSpec警卫?

我使用guard-rspec在我的文件发生变化时自动运行必要的rspectesting,我喜欢它的工作原理。 但是,当我用多个testingdebugging一个文件时,有时我只想要重新运行一个单独的testing。 例如,从命令行使用rspec: rspec spec/requests/my_favorite_spec.rb:100 这将仅运行my_favorite_spec.rb中第100行的单个规范。 我试着把上面的内容input到控制台,但是它只是运行了所有的testing,就像我刚刚按下input一样。 在控制台中是否有另一种语法来运行单个规范?

类中的Ruby类(或模块中的模块)

在阅读不同的Ruby书籍时,我注意到Ruby类可以在其他Ruby类或模块中定义。 下面是一个类中的类的例子: class Outerclass def foobar puts "FOOBAR" end class Innerclass def barfoo puts "BARFOO" end end end 以下是我在IRB中运行的一些代码,试图从概念上理解这一点: oc = Outerclass.new # => #<Outerclass:0x00000100a46478> Outerclass.instance_methods(false) # => [:foobar] ic = Outerclass::Innerclass.new # => #<Outerclass::Innerclass:0x00000100a0b120> ic = Outerclass::Innerclass.instance_methods(false) # => [:barfoo] 这是我的问题: 当ruby解释器首次遇到我的类定义代码时,是否会通过我写的方法并将其存储在某个地方? 我知道实例方法“foobar”实际上并没有运行,因为在Outerclass定义中没有对它进行调用。 捎带第一个问题,当Ruby遇到类Innerclass时呢? 这里发生了什么? 一般来说,为什么你想要在课堂上有class级,有什么原因? 这样做有什么好处吗? Outerclass的一个实例是否对类Innerclass有了解? Innerclass的一个实例是否知道类Outerclass? 感谢您可以提供的任何帮助!

从Net :: HTTP处理exception的最好方法是什么?

从Net :: HTTP中拯救exception的最好方法是什么? 抛出的exception在Ruby的socket.c中描述,如Errno::ETIMEDOUT , Errno::ECONNRESET和Errno::ECONNREFUSED 。 所有这些的基类是SystemCallError ,但是像下面这样编写代码感觉很奇怪,因为SystemCallError看起来已经远离了进行HTTP调用: begin response = Net::HTTP.get_response(uri) response.code == "200" rescue SystemCallError false end 只有我吗? 有没有更好的方式来处理这个超越修复Net::HTTP来处理Errnoexception,可能会popup并将其封装在父HttpRequestException ?

截断,事务和删除数据库策略之间的区别

使用Rspec时,截断,事务和删除数据库策略有什么区别? 我找不到解释这个的任何资源。 我阅读了数据库清理器的自述文件,但是并没有解释它们各自的作用。 为什么我们必须为水豚使用截断策略? testing时是否必须清理数据库,还是可以禁用它? 我不明白为什么我应该在每个testing用例之后清理我的数据库,难道不会减慢testing吗?

为什么将respond_with从rails 4.2中移除到它自己的gem中?

在rails 4.2中, respond_with已经从核心转移到了响应者的gem中。 Beta版本说明。 respond_with has moved out and into its own proper home with the responders gem. 有人可以解释为什么吗? 是什么让响应者成为适当的家? 它留在Rails的gem有什么不对?

在尝试parsing之前检查一个string是否有效json?

在Ruby中,是否有一种方法来检查一个string是否是有效的JSON之前试图parsing它? 例如从其他url获取一些信息,有时会返回json,有时会返回一个不是有效响应的垃圾。 我的代码: def get_parsed_response(response) parsed_response = JSON.parse(response) end

我必须手动卸载所有依赖的gem?

我试图用命令gem uninstall dm-core卸载datamapper。 但是似乎还有一大堆依赖的gem需要卸载。 C:\>gem uninstall dm-core You have requested to uninstall the gem: dm-core-0.9.11 dm-migrations-0.9.11 depends on [dm-core (= 0.9.11)] dm-cli-0.9.11 depends on [dm-core (= 0.9.11)] dm-serializer-0.9.11 depends on [dm-core (= 0.9.11)] dm-timestamps-0.9.11 depends on [dm-core (= 0.9.11)] dm-aggregates-0.9.11 depends on [dm-core (= 0.9.11)] dm-types-0.9.11 depends on [dm-core (= 0.9.11)] dm-is-tree-0.9.11 depends on [dm-core […]

如何通过Rack提供静态文件?

我目前正在开发一个基于机架的应用程序,并希望将所有文件请求(例如filename.filetype)redirect到指定的文件夹。 Rack :: Static只支持特殊文件夹的文件请求(例如“/ media”)。 我是否必须编写一个自己的Rack中间件,或者有一个开箱即用的解决scheme? 最好的祝福

在Ruby中,为什么nil.id返回4?

这已经困扰我很长一段时间了。 >> nil.id (irb):2: warning: Object#id will be deprecated; use Object#object_id => 4 为什么nil.id是4? (或者如果你想挑剔的话可以用nil.object_id)