标签: ruby

Python与Ruby的元编程

我目前主要是D程序员,我希望在我的工具箱中添加另一种语言,最好是支持元编程黑客的语言,而这些语言无法用静态编译的语言完成.

我已经阅读了一点Lisp,我很想找到一种语言,允许Lisp做的一些很酷的东西,但没有Lisp的奇怪语法等.我不想开始语言火焰战,我确信Ruby和Python都有他们的权衡,所以我将列出对我个人来说重要的事情.请告诉我Ruby,Python或其他语言是否最适合我.

重要:

  1. 好的元编程.能够在运行时创建类,方法,函数等.最好是代码和数据之间的最小区别,Lisp风格.
  2. 漂亮,干净,理智的语法和一致,直观的语义.基本上是一个深思熟虑,有趣的使用,现代语言.
  3. 多种范式.没有一个范例适用于每个项目,甚至是项目中的每个小子问题.
  4. 一种有趣的语言实际上影响了人们对编程的看法.

有一些重要:

  1. 性能.如果性能很好,那将是很好的,但是当性能是一个真正的优先级时,我将使用D代替.
  2. 充分证明.

不重要:

  1. 社区规模,图书馆可用性等.这些都不是语言本身的特征,而且所有这些都可以很快改变.
  2. 工作可用性.我不是一名全职的专业程序员.我是一名研究生,编程与我的研究相关.
  3. 任何主要针对非常大型项目设计的功能都会考虑到一百万个代码猴子.

ruby lisp python metaprogramming

89
推荐指数
12
解决办法
3万
查看次数

Ruby:将变量合并到一个字符串中

我正在寻找一种更好的方法将变量合并到一个字符串中,在Ruby中.

例如,如果字符串是这样的:

"的animal actionsecond_animal"

我有变量animal,action并且second_animal,将这些变量放入字符串的首选方法是什么?

ruby string

89
推荐指数
5
解决办法
11万
查看次数

为什么所有Rails帮助程序始终可用于所有视图?有没有办法禁用它?

为什么我可以在视图中为不同的控制器访问一个控制器的辅助方法?有没有办法在没有黑客攻击/修补Rails的情况下禁用它?

ruby ruby-on-rails helpers

89
推荐指数
4
解决办法
4万
查看次数

在Ruby脚本中运行命令行命令

有没有办法通过Ruby运行命令行命令?我正在尝试创建一个小的Ruby程序,它可以通过'screen','rcsz'等命令行程序拨出和接收/发送.

如果我可以将所有这些与Ruby(MySQL后端等)结合在一起,那将是很棒的.

ruby terminal scripting command-line command-prompt

89
推荐指数
3
解决办法
8万
查看次数

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

Rails:around_*回调

我已经阅读了http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html上的文档,但是不知道何时around_*触发了关于before_*和的回调after_*.

任何帮助非常感谢.

谢谢.

ruby ruby-on-rails callback

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

TCPServer错误:地址已在使用中 - bind(2)

几个星期前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 jekyll

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

从Ruby中的modules/mixins继承类方法

众所周知,在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)

ruby mixins

89
推荐指数
3
解决办法
4万
查看次数

如何知道红宝石中什么是非线程安全的?

从Rails 4开始,默认情况下,所有内容都必须在线程环境中运行.这意味着所有我们写的代码 所有我们使用需要是宝石threadsafe

所以,我对此几乎没有问题:

  1. 在ruby/rails中什么不是线程安全的?Vs什么是ruby/rails的线程安全?
  2. 是否有宝石的列表称为是线程安全的,反之亦然?
  3. 有没有线程安全示例的常见代码模式列表@result ||= some_method
  4. ruby lang核心中的数据结构是否是诸如Hash线程安全的?
  5. 在核磁共振成像上,其中一个GVL/GIL表示一次只能运行一个红宝石线程,除了IO线程安全变化对我们有影响吗?

ruby concurrency multithreading thread-safety ruby-on-rails-4

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

Ruby:如何将字符串转换为布尔值

我有一个值将是四件事之一:布尔值true,布尔值false,字符串"true"或字符串"false".我想将字符串转换为布尔值,如果它是一个字符串,否则保持不变.换一种说法:

"真实"应该成真

"假"应该变成虚假

真的应该保持真实

假应该保持虚假

ruby string boolean type-conversion

89
推荐指数
10
解决办法
10万
查看次数