在Python中,您可以这样做:
import webbrowser
webbrowser.open_new("http://example.com/")
Run Code Online (Sandbox Code Playgroud)
它将在默认浏览器中打开传入的URL
有红宝石等价物吗?
这一直困扰着我一段时间.当我看到任何以文本打印的Ruby方法时,它通常显示为:
Class#method
Run Code Online (Sandbox Code Playgroud)
要么
#method
Run Code Online (Sandbox Code Playgroud)
现在,我会用:
Class.method
Run Code Online (Sandbox Code Playgroud)
为什么所有Ruby方法都以井号开头?有什么理由吗?只是好奇.
是否有更短的方法来要求位于同一目录中的文件(正在执行的脚本)?
require File.expand_path(File.dirname(__FILE__) + '/some_other_script')
Run Code Online (Sandbox Code Playgroud)
我读了这个require "my_script"并且require "./my_script"实际上会加载脚本两次(ruby不会认识到它实际上是同一个脚本),这File.expand_path就是推荐的原因:如果每次需要脚本时都使用它,那么它只会被加载一旦.
对我来说,像Ruby这样的简洁语言似乎没有更短的解决方案,这似乎很奇怪.例如,python只是这个:
import .some_other_module_in_the_same_directory
Run Code Online (Sandbox Code Playgroud)
我想我可以修补猴子require......但这只是邪恶的!;-)
我有一个小的ruby脚本,我想使用ActiveRecord轻松访问数据库模型.最好的方法是什么?
我有一个访问某些属性值的简单任务.下面是一个简单的脚本,用于Nokogiri::XML::Builder创建一个简单的xml doc.
require 'nokogiri'
builder = Nokogiri::XML::Builder.new(:encoding => 'UTF-8') do |xml|
xml.Placement(:messageId => "392847-039820-938777", :system => "MOD", :version => "2.0") {
xml.objects {
xml.object(:myattribute => "99", :anotherattrib => "333")
xml.nextobject_ '9387toot'
xml.Entertainment "Last Man Standing"
}
}
end
puts builder.to_xml
puts builder.root.attributes["messageId"]
Run Code Online (Sandbox Code Playgroud)
结果如下:
<?xml version="1.0" encoding="UTF-8"?>
<Placement messageId="392847-039820-938777" version="2.0" system="MOD">
<objects>
<object anotherattrib="333" myattribute="99"/>
<nextobject>9387toot</nextobject>
<Entertainment>Last Man Standing</Entertainment>
</objects>
</Placement>
C:/Ruby/lib/ruby/gems/1.8/gems/nokogiri-1.4.2-x86-mingw32/lib/nokogiri/xml/document.rb:178:in `add_child': Document already has a root node (RuntimeError)
from C:/Ruby/lib/ruby/gems/1.8/gems/nokogiri-1.4.2-x86-mingw32/lib/nokogiri/xml/node.rb:455:in `parent='
from C:/Ruby/lib/ruby/gems/1.8/gems/nokogiri-1.4.2-x86-mingw32/lib/nokogiri/xml/builder.rb:358:in `insert'
from C:/Ruby/lib/ruby/gems/1.8/gems/nokogiri-1.4.2-x86-mingw32/lib/nokogiri/xml/builder.rb:350:in `method_missing' …Run Code Online (Sandbox Code Playgroud) if当我们then在if语句的末尾添加一个时,这两个Ruby 语句之间的区别是什么?
if(val == "hi") then
something.meth("hello")
else
something.meth("right")
end
Run Code Online (Sandbox Code Playgroud)
和
if(val == "hi")
something.meth("hello")
else
something.meth("right")
end
Run Code Online (Sandbox Code Playgroud) 运行Rails服务器时,我收到以下错误:没有要加载的文件 - openssl
我尝试在网上找到的解决方案.我去〜/ .rvm/src/ruby-1.9.2-head/ext/openssl.我键入:ruby extconf.rb,但我得到以下内容:
=== OpenSSL for Ruby configurator ===
=== Checking for system dependent stuff... ===
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for assert.h... yes
=== Checking for required stuff... ===
checking for openssl/ssl.h... no
=== Checking for required stuff failed. ===
Makefile wasn't created. Fix the errors above.
Run Code Online (Sandbox Code Playgroud)
我不能使用make也不能make install.
当宝石名称有多个单词时,我对宝石命名约定是什么感到困惑.
thinking-sphinx是gem的名称,但是这个gem的基础*.rb文件是lib/thinking_sphinx.rb(下划线)
acts-as-taggable-on是gem的名称,base*.rb文件名为lib/acts-as-taggable-on.rb(连字符)
factory_girl在gem名称和base*.rb文件的名称中使用下划线
如果使用下划线或连字符,这有关系吗?这里是否有任何新的共识?
平台:Mac OSX 10.6
在我的终端中,我使用"rails c"启动Ruby控制台
按照Ruby on Rails 3教程构建一个类:
class Word < String
def palindrome? #check if a string is a palindrome
self == self.reverse
end
end
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
TypeError: superclass mismatch for class Word
from (irb):33
from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands/console.rb:44:in `start'
from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands/console.rb:8:in `start'
from /Users/matthew/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/railties-3.0.5/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Run Code Online (Sandbox Code Playgroud)
教程显示它没有问题,我知道代码很好; 我搜索了其他相关问题,但他们都涉及从Ruby 2迁移到3或erb vs eruby.