我目前主要是D程序员,我希望在我的工具箱中添加另一种语言,最好是支持元编程黑客的语言,而这些语言无法用静态编译的语言完成.
我已经阅读了一点Lisp,我很想找到一种语言,允许Lisp做的一些很酷的东西,但没有Lisp的奇怪语法等.我不想开始语言火焰战,我确信Ruby和Python都有他们的权衡,所以我将列出对我个人来说重要的事情.请告诉我Ruby,Python或其他语言是否最适合我.
重要:
有一些重要:
不重要:
我正在寻找一种更好的方法将变量合并到一个字符串中,在Ruby中.
例如,如果字符串是这样的:
"的animal action的second_animal"
我有变量animal,action并且second_animal,将这些变量放入字符串的首选方法是什么?
为什么我可以在视图中为不同的控制器访问一个控制器的辅助方法?有没有办法在没有黑客攻击/修补Rails的情况下禁用它?
有没有办法通过Ruby运行命令行命令?我正在尝试创建一个小的Ruby程序,它可以通过'screen','rcsz'等命令行程序拨出和接收/发送.
如果我可以将所有这些与Ruby(MySQL后端等)结合在一起,那将是很棒的.
谁能告诉我类变量和类实例变量之间的区别?
我已经阅读了http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html上的文档,但是不知道何时around_*触发了关于before_*和的回调after_*.
任何帮助非常感谢.
谢谢.
几个星期前Jekyll对我很好,但现在突然间它给了我以下错误:
TCPServer Error: Address already in use - bind(2)
INFO WEBrick::HTTPServer#start: pid=7300 port=4000
% lsof -i :4000
<fetches nothing>
Run Code Online (Sandbox Code Playgroud)
即使端口上没有运行任何东西.以下是详细信息:
% jekyll --version
Jekyll 0.11.2
% where jekyll
/home/bhaarat/.rvm/gems/ruby-1.9.2-p290/bin/jekyll
/usr/bin/jekyll
% ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
% rvm --version
rvm 1.10.0
Run Code Online (Sandbox Code Playgroud)
这是输出
% jekyll --server
Configuration from /home/bhaarat/blog/omnipresent.github.com/_config.yml
Auto-regenerating enabled: /home/bhaarat/blog/omnipresent.github.com -> /home/bhaarat/blog/omnipresent.github.com/_site
[2012-04-21 13:46:40] regeneration: 38 files changed
[2012-04-21 13:46:40] INFO WEBrick 1.3.1
[2012-04-21 13:46:40] INFO ruby 1.9.2 (2011-07-09) [i686-linux]
[2012-04-21 13:46:40] WARN TCPServer Error: Address …Run Code Online (Sandbox Code Playgroud) 众所周知,在Ruby中,类方法得到了继承:
class P
def self.mm; puts 'abc' end
end
class Q < P; end
Q.mm # works
Run Code Online (Sandbox Code Playgroud)
然而,令我惊讶的是它不适用于mixins:
module M
def self.mm; puts 'mixin' end
end
class N; include M end
M.mm # works
N.mm # does not work!
Run Code Online (Sandbox Code Playgroud)
我知道#extend方法可以做到这一点:
module X; def mm; puts 'extender' end end
Y = Class.new.extend X
X.mm # works
Run Code Online (Sandbox Code Playgroud)
但我正在编写一个包含实例方法和类方法的mixin(或者,更愿意写):
module Common
def self.class_method; puts "class method here" end
def instance_method; puts "instance method here" end
end
Run Code Online (Sandbox Code Playgroud)
现在我想做的是:
class A; include Common
# custom …Run Code Online (Sandbox Code Playgroud) 从Rails 4开始,默认情况下,所有内容都必须在线程环境中运行.这意味着所有我们写的代码和 所有我们使用需要是宝石threadsafe
所以,我对此几乎没有问题:
@result ||= some_method?Hash线程安全的?GVL/GIL表示一次只能运行一个红宝石线程,除了IO线程安全变化对我们有影响吗?ruby concurrency multithreading thread-safety ruby-on-rails-4
我有一个值将是四件事之一:布尔值true,布尔值false,字符串"true"或字符串"false".我想将字符串转换为布尔值,如果它是一个字符串,否则保持不变.换一种说法:
"真实"应该成真
"假"应该变成虚假
真的应该保持真实
假应该保持虚假