如何使用ruby Mechanize gem获取网站的所有链接? Mechanize可以像Anemone gem那样做: Anemone.crawl(“https://www.google.com.vn/”) do |anemone| anemone.on_every_page do |page| puts page.url end end 我是网络爬虫的新手。 提前致谢!
好的,这是一项简单的任务。 在我将html渲染到客户端后,我想用请求中的信息执行db调用。 我正在使用sinatra,因为它是一个轻量级的微框架,但是如果它更快/更容易(Rack?),我真的想用ruby做任何东西。 我只想获取url并根据url将客户端重定向到其他位置。 那么如何使用rack / sinatra进行真正的after_filter。 而after_filter我的意思是在响应发送给客户端之后。 或者,如果没有线程,这是不可行的? 我分叉sinatra并在filter之后添加,但是没有办法刷新响应,即使是send_data,假设流文件(显然是二进制文件)等待after_filters。 我已经看到了这个问题: 多部分响应在ruby中,但答案是针对rails。 我不确定它是否真的刷新了对客户端的响应,然后允许后续处理。 Rack :: Callbacks有一些回调之前和之后,但即便看起来它们会在响应被发送到客户端之前运行这里的Rack :: Callbacks实现(添加注释): def call(env) @before.each {|c| c.call(env) } response = @app.call(env) @after.each {|c| c.call(env) } response #i am guessing when this method returns then the response is sent to the client. end 所以我知道我可以用rake通过shell调用后台任务。 但是没有太多也是好的…还有NeverBlock但是对于执行一个单独的进程而不延迟响应是好的还是它仍然会使应用程序等待整体(我认为它会)? 我知道这很多,但简而言之,简单的after_filter在ruby / sinatra / rack中发送响应之后真正运行。 […]
当我将lambda传递给instance_eval作为块时,它似乎传递了一个额外的参数: lamb = -> { puts ‘hi’ } proc = Proc.new { puts ‘hi’ } instance_eval(&lamb) # >> ArgumentError: wrong number of arguments (given 1, expected 0) # from (irb):5:in `block in irb_binding’ # from (irb):7:in `instance_eval’ instance_eval(&proc) # => hi instance_exec(&lamb) # => hi 为什么会这样? 请注意,这个问题不是关于lambda抛出错误的原因。 这很好理解。 问题是关于为什么instance_eval将接收者的self作为参数发送。 它不是必需的,而且令人困惑。 AFAIK没有记录。 这有帮助,但没有解释为什么ruby会这样做。 instance_eval是将self设置为接收者; 为什么通过将self传递给proc来混淆事物呢?
为了给你一些上下文,我试图使用Figaro安全地添加环境变量,而不必担心安全风险。 问题是我似乎无法让Engine Yard在生产中发挥出色。 我去做了一个touch application.yml然后vim application.yml , 我 ,然后命令 + v插入api键,什么不是。 我知道ENV[‘VARIABLES’]工作是因为开发和所有我的rspec和黄瓜测试(利用API)都通过了。 当我准备好一切时,我在.gitignore添加: # Ignore application configuration /config/application.yml 之后,我部署了该网站。 我打开它,数据不再用于API了。 好… cd进入config并发现application.yml不再存在了。 将其粘贴回…重新部署网站,因为它现在知道它必须忽略该文件,我没有看到生产的变化。 检查一下……它再次消失! 难以理解正在发生的事情。
有许多问题可以帮助将特定的SQL查询转换为ActiveRecord查询。 是否有一些帮助/指导[在线]工具自动进行转换?
我想写一个RoR移动应用程序,它给我一个给定电话号码的国家当前时间及其区号。 这有什么好的api吗?
我刚刚完成了全新的安装,并且能够访问localhost:3000的默认rails页面,但是当我安装activeadmin gem时,访问/ admin /时出现问题并在/ admin / login上收到以下错误(我被重定向,但这是我在页面上看到的:) 我该怎么办? 我已经完成了捆绑更新,并没有修复它。 这是部分错误消息: Sprockets :: FileNotFound在Active_admin / devise / sessions#new中 显示/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/views/layouts/active_admin_logged_out.html.erb,其中第12行引发: 找不到文件’jquery-ui’(在/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activeadmin->0.6.0/app/assets/javascripts/active_admin/base.js中: 2) 这是我的gem文件: source ‘https://rubygems.org’ gem ‘rails’, ‘3.2.12’ # Bundle edge Rails instead: # gem ‘rails’, :git => ‘git://github.com/rails/rails.git’ gem ‘sqlite3’ # Gems used only for assets and not required # in production environments by default. group […]
我终于掌握了轨道,并且对它开始学习最佳实践感觉很舒服,我的列表中的第一个是TDD原则。 使用Rails了解TDD的最佳资源是什么? 书籍,教程,任何东西。 我渴望学习!
当我渲染:在rails中的xml我总是想要:dasherize => false选项。 有没有办法将应用程序范围设置为默认值,当然不必修改rails源代码? 也许是一个渲染函数,它以某种方式优先于第一个,然后使用此选项调用它…
我有两个控制器,我使用铁轨脚手架发电机创建。 我希望它们嵌套在一个名为“demo”的文件夹中,然后运行 rails g scaffold demo/flows rails g scaffold demo/nodes 然后我决定在流内嵌套节点,并改变我的路由文件,如下所示: namespace :demo do resources :flows do resources :nodes end end 但是这种变化导致了对节点的rspec测试破坏了ActionController :: Routing错误。 15) Demo::NodesController DELETE destroy redirects to the demo_nodes list Failure/Error: delete :destroy, :id => “1” ActionController::RoutingError: No route matches {:id=>”1″, :controller=>”demo/nodes”, :action=>”destroy”} 问题是rspec正在寻找错误的路线。 它应该寻找“demo / flows / 1 / nodes”。 它还需要一个模拟流程模型,但我不知道如何提供。 […]