标签: ruby

Nokogiri/Xpath名称空间查询

我正在尝试dc:title使用xpath 拉出元素.我可以使用以下代码提取元数据.

doc = <<END
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf" version="2.0">
  <metadata xmlns:dc="URI">
    <dc:title>title text</dc:title>
  </metadata>
</package>
END

doc = Nokogiri::XML(doc)

# Awesome this works!
puts '//xmlns:metadata'
puts doc.xpath('//xmlns:metadata')
# => <metadata xmlns:dc="URI"><dc:title>title text</dc:title></metadata>
Run Code Online (Sandbox Code Playgroud)

如您所见,上面似乎正常工作.但是,我似乎无法从此节点树获取标题信息,以下所有内容都失败了.

puts doc.xpath('//xmlns:metadata/title')
# => nil

puts doc.xpath('//xmlns:metadata/dc:title')
# => ERROR: `evaluate': Undefined namespace prefix

puts doc.xpath('//xmlns:dc:title')
# => ERROR: 'evaluate': Invalid expression: //xmlns:dc:title
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何使用上面的xml doc在xpath中使用命名空间.

ruby xml xpath nokogiri

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

为什么我的Ruby路径上没有当前目录?

有没有理由说我目前的工作目录不在我的Ruby路径上?

考虑:

~:499$ irb
ruby-1.9.2-p136 :002 > puts $:
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.6.0
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/site_ruby
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.6.0
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/vendor_ruby
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1
/Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/x86_64-darwin10.6.0
 => nil 
Run Code Online (Sandbox Code Playgroud)

这真的很困扰我,因为需要不起作用,因为我认为它会(虽然我是一个红宝石的nuby):

require 'some_file_that_I_know_darn_well_is_in_pwd.rb'
Run Code Online (Sandbox Code Playgroud)

如果我追加'.'到最后,则需求按照我的预期运行.

我错过了什么?


更新:

精氨酸!现在我遇到了一个新问题.考虑:

ruby-1.9.2-p136 :010 > `ls`
 => "start.rb\n" 
ruby-1.9.2-p136 :011 > require_relative 'start'
LoadError: cannot infer basepath
    from (irb):11:in `require_relative'
    from (irb):11
    from /Users/mrberryman/.rvm/rubies/ruby-1.9.2-p136/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

现在怎么了?

ruby irb

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

我如何在不同的视图中使用帮助器

我现在正在使用炼油厂的cms.我创建了一个引擎,并带有一些助手app/helpers/admin/.现在我想在我的前端视图(即.app/views/myapp/index)中使用这些助手.但我不能......未定义的方法错误.除了将整个事情复制到一起之外我该怎么做app/helpers/?助手看起来像这样

module Admin
    module myHelper
        def somefunc
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

那么可以somefunc在Admin模块之外使用吗?

ruby ruby-on-rails refinerycms

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

Ruby - UTF-8文件编码

我们都知道"神奇"

# encoding: utf-8
Run Code Online (Sandbox Code Playgroud)

线.但我已经看到了其他几种替代符号,其中一些非常狂野.你知道或使用其中的任何一个吗?是否有一些更普遍的规则可以接受什么?

编辑:好的,显然有3种方式:

# encoding: UTF-8

# coding: UTF-8

# -*- coding: UTF-8 -*-
Run Code Online (Sandbox Code Playgroud)

(更多信息,请访问http://blog.grayproductions.net/articles/ruby_19s_three_default_encodings)

ruby unicode ruby-1.9

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

rbenv没有显示可用的ruby版本

我已经安装rbenv在我的流浪汉机器上但是当我尝试列出所有可用的ruby版本时rbenv versions它会给我这个输出:

system (set by /home/vagrant/.rbenv/version)

有谁知道这是什么?

ruby rbenv

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

使用gem卸载特定版本的库

例如,我安装了以下四个版本:

水豚(2.2.1,2.2.0.rc1,2.1.0,1.1.4)

请建议如何卸载capybara版本1.1.4

ruby linux gem ruby-on-rails

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

用于Rails 4中JSON处理的jbuilder vs rails-api/active_model_serializers

我已经开始了Rails 4.

在处理JSON格式数据时,我发现我们可以使用rails/jbuilder并且运行良好.

但是,当我拿着Codeschool的Rails 4 Pattern时,他们提到了gem active_model_serializers.

对于active_model_serializersgem而言,所有JSON序列化逻辑都会进入Model(被认为是最佳实践).

而对于jbuildergem,我们需要编写带扩展名的单独视图文件.json.jbuilder.

我的问题是:

  • 哪一个是JSON数据处理的理想选择
  • 两者之间的任何性能差异

ruby ruby-on-rails jbuilder active-model-serializers ruby-on-rails-4

35
推荐指数
1
解决办法
9369
查看次数

Ruby open-uri重定向被禁止

我有这个简单的html解析器(用于学习目的),我一直在研究:

require 'open-uri'
puts "Enter URL to parse HTML: "
url = gets.chomp
puts "Enter tag to parse from: "
tag = gets.chomp
response = open(url).read
title1 = response.index(tag)
title2 = response.index(tag.insert(1,'/')) -1
result = response[(title1 + tag.length - 1)..title2]
print result 
Run Code Online (Sandbox Code Playgroud)

当我输入时http://twitter.com,我收到此错误消息:

ERROR: `open_loop': redirection forbidden: http://twitter.com -> https://twitter.com/ (RuntimeError)
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:704:in `open'
from /usr/local/rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/open-uri.rb:34:in `open'
from /home/ubuntu/workspace/htmlparse.rb:6:in `<main>' 
Run Code Online (Sandbox Code Playgroud)

有任何建议或帮助吗?我是Ruby新手,我知道其他html解析模块,但我这样做是为了学习Ruby基础知识.谢谢.

ruby open-uri

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

Wicked PDF忽略了引导网格系统

在我的模板x.pdf.erb网站中,我链接了所有样式表和javascript标记:

           <%= wicked_pdf_stylesheet_link_tag "bootstrap.css" -%>
            <%= wicked_pdf_stylesheet_link_tag "style.css" -%>
            <%= wicked_pdf_stylesheet_link_tag "styleUmowa.css" -%>
            <%= wicked_pdf_stylesheet_link_tag "animate.css" -%>
            <%= wicked_pdf_javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

生成pdf网站时,除了bootstrap网格系统外,一切都很好,我的意思是邪恶的pdf忽略了我的:

<div class="container">
   <div class="row">
       <div class="col-lg-4"></div>
       <div class="col-lg-4"></div>
       <div class="col-lg-4"></div>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

因此,它显示为没有自举网格的普通div.你能帮帮我吗?

html ruby pdf ruby-on-rails twitter-bootstrap

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

Postgres权限被拒绝在rake db:create:all上创建数据库

我正在尝试为开发和测试创建postgres数据库.

我正在使用...

  • OSX Yosemite
  • Rails版本:4.2.0
  • git版本:2.2.2
  • psql版本:9.4.0
  • ruby版本:2.1.0p0
  • HomeBrew版本:0.9.5

的Gemfile ...

gem 'pg'
Run Code Online (Sandbox Code Playgroud)

database.yml的

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: myapp_development
  username: username
  password: 

test:
  <<: *default
  database: myapp_test
Run Code Online (Sandbox Code Playgroud)

rake db:create:all 回报

PG::InsufficientPrivilege: ERROR:  permission denied to create database
: CREATE DATABASE "myapp_development" ENCODING = 'unicode'
.... (lots of tracing)
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "database"=>"myapp_development", "username"=>"username", "password"=>nil}
myapp_test already exists
Run Code Online (Sandbox Code Playgroud)

怎么了?

编辑 我只是尝试将database.yml中的用户名更改为我在Mac上使用的用户名.有效.它还告诉我,不仅maybe_test' already exists, but it also just told …

ruby postgresql ruby-on-rails

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