有时我觉得我的公司是世界上唯一使用Ruby而不是Ruby on Rails的公司,以至于Rails几乎已成为Ruby的代名词.
我确定这不是真的,但是听到一些关于非Rails Ruby使用的故事会很有趣.
编辑:请,请,请阅读前回答这个帖子的底部列出的两个要求.人们不断发布他们的新宝石和图书馆等等,这显然不符合要求.
有时我想非常便宜地将一些命令行选项破解成一个简单的脚本.一个有趣的方法,没有处理getopts或解析或类似的东西,是:
...
$quiet = ARGV.delete('-d')
$interactive = ARGV.delete('-i')
...
# Deal with ARGV as usual here, maybe using ARGF or whatever.
Run Code Online (Sandbox Code Playgroud)
它不是普通的Unix选项语法,因为它将接受选项非选项命令行参数,如" myprog -i foo bar -q",但我可以忍受.(有些人,比如Subversion的开发人员,更喜欢这个.有时我也会这样做.)
只是存在或不存在的选项不能比上述更简单地实现.(一个赋值,一个函数调用,一个副作用.)是否有一种同样简单的方法来处理带参数的选项,例如" -f filename "?
我之前没有说过的一点,因为直到Trollop的作者提到图书馆符合"一个[800行]文件"之前我才清楚,我的目的不仅仅是清洁语法,但对于具有以下特征的技术:
整个代码可以包含在脚本文件中(不会压倒实际的脚本本身,可能只有几十行),因此可以bin使用标准的Ruby 1.8在任何系统上删除dir中的单个文件.[5-7]安装并使用它.如果你不能编写一个没有require语句的Ruby脚本,并且解析几个选项的代码在十几行左右,那么你就不能满足这个要求.
代码很小而且非常简单,人们可以记住足够的代码来直接输入代码来完成这一操作,而不是从其他地方剪切和粘贴.想想你在一个没有互联网访问权限的防火墙服务器的控制台上的情况,你想把一个快速的脚本拼凑起来供客户使用.我不了解你,但是(除了上面的要求失败之外)记住甚至45行的简化微型optparse也不是我要做的事情.
我目前的ruby版本是,ruby 1.9.2p0 (2010-08-18 revision 29036) [x86_64-darwin10.5.0]但我想使用rvm将其更新到最新的补丁级别.我怎样才能做到这一点?
我知道ruby中没有抽象类的概念.但是,如果它需要实施,那该怎么办呢?我试过像......
class A
def self.new
raise 'Doh! You are trying to write Java in Ruby!'
end
end
class B < A
...
...
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实例化B时,它会在内部调用A.new哪个会引发异常.
此外,模块无法实例化,但也无法继承.使新方法私有也行不通.有什么指针吗?
在Ruby中,我理解了它的基本思想extend.但是,这段代码中发生了什么?具体来说,做extend什么?它只是将实例方法转换为类方法的便捷方式吗?你为什么要这样做,而不是从一开始就指定类方法?
module Rake
include Test::Unit::Assertions
def run_tests # etc.
end
# what does the next line do?
extend self
end
Run Code Online (Sandbox Code Playgroud) 你如何评论html与ruby代码混合?
some text <% ... %> more text <%= ... %>
something else
<% ... %>
Run Code Online (Sandbox Code Playgroud)
在jsp中它真的很简单:<%-- ... --%>但是我无法在rails中找到任何简洁的选项.
简单的html注释<!-- ... -->不起作用:ruby代码仍然执行并且会出错.
有一个选项可用于if falsehtml注释,但它非常冗长,更不用说IDE不支持它.
还有一种来自纯红宝石的选择,这令人惊讶地起作用.
<%
=begin %>
... html and ruby code goes here
<%
=end %>
Run Code Online (Sandbox Code Playgroud)
它通常很好,除了它冗长,看起来很奇怪,我知道没有任何ruby IDE支持它(是的,我喜欢用一次击键来评论/评论).
我很好奇,在轨道上有没有"正式"这样做?
谢谢!
试图安装rvm和ruby 1.9.2
我已经安装了自制软件和git,但无法获得完整的更新,因为我一直收到权限错误.重新安装Snow Leopard并修复了权限.
现在这发生了......
$ brew install wget
错误:无法写入/ usr/local/Cellar
使用时gem install gem_name我可以通过--no-rdoc并--no-ri切换到跳过为安装时的gem生成RDoc/RI文档.
是否有类似的方法来做到这一点bundle install?
我刚刚开始使用Ruby(和rails).我按照http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems 进行了设置rvm.我用sqlite做得很好.
现在我想尝试将事情转换为MySQL,因为这是我开发的大部分内容.在我的Gemfile中,我用mysql2替换了sqlite:
group :development, :test do
# gem 'sqlite3', '1.3.5'
gem 'mysql2'
gem 'rspec-rails', '2.9.0'
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在MySQL中为rails创建数据库时,我得到:
$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
Run Code Online (Sandbox Code Playgroud)
我已经看到其他帖子建议通过自制软件重新安装MySQL(我的是通过可下载的DMG安装的),但我不想这样做,因为我已经有其他几个非ruby项目的数据库了.
事实上我确实有Rails正在寻找的文件; 它安装在/usr/local/mysql/lib/libmysqlclient.18.dylib.告诉Rails如何找到它的最佳方法是什么?