标签: ruby-1.9.2

获取类的实例方法列表

我有一节课:

class TestClass
  def method1
  end

  def method2
  end

  def method3
  end
end
Run Code Online (Sandbox Code Playgroud)

我怎样才能在这个类的我的方法列表(method1,method2,method3)?

ruby reflection ruby-1.9.2

92
推荐指数
6
解决办法
9万
查看次数

由于规范中的日期格式,gemspec无效

当我包含我制作的宝石时,感谢Bundler(版本1.0.12),在Gemfile中,然后我尝试捆绑或耙就像:

$ rake

我有这个错误信息:

Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
Run Code Online (Sandbox Code Playgroud)

我在最后一台Mac OS X(10.6.4)上,有:

$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.4.0]
Run Code Online (Sandbox Code Playgroud)

和:

$ gem -v
Invalid gemspec in [/Users/zagzag/.rvm/gems/ruby-1.9.2-p180@foobar/specifications/myplugin-1.0.0.gemspec]: invalid date format in specification: "2011-04-21 00:00:00.000000000Z"
1.7.2
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何解决这个问题.谢谢你的任何想法.

rubygems bundler ruby-1.9 ruby-1.9.2

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

线程安全:Ruby中的类变量

在Ruby中对类变量执行写入/读取不是线程安全的.对实例变量执行写入/读取似乎是线程安全的.也就是说,对类或元类对象的实例变量执行写/读是否是线程安全的?

在线程安全方面,这三个(人为的)示例之间有什么区别?

例1: 相互排斥

class BestUser # (singleton class)
  @@instance_lock = Mutex.new

  # Memoize instance
  def self.instance
    @@instance_lock.synchronize do
      @@instance ||= best
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

例2: 实例变量存储

class BestUser # (singleton class)
  # Memoize instance
  def self.instance
    @instance ||= best
  end
end
Run Code Online (Sandbox Code Playgroud)

例3: 在METACLASS上安装可变存储器

class BestUser # (singleton class)
  # Memoize instance
  class << self
    def instance
      @instance ||= best
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby multithreading metaprogramming thread-safety ruby-1.9.2

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

如何使用RVM设置默认的Ruby版本?

Ubuntu 11.

我做以下事情:

$ rvm --default use 1.9.2 我得到:

Using /home/md/.rvm/gems/ruby-1.9.2-p180 这样很好.

但是当我现在打开一个新的终端窗口时,我仍然得到:

$ ruby -v

ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]

ruby ruby-on-rails rvm ruby-1.9.2

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

ruby和nor irb都不能在当前目录中加载.rb文件

我在Ruby中导入文件时遇到了麻烦.我在Windows XP中制作一个Ruby应用程序.该应用程序的所有类文件都在"C:/Documents/Prgm/Surveyor_Ruby/lib".但是当我require在另一个文件中的文件时,ruby和irb都无法找到所需的文件.

当前目录的内容:

C:\Documents\Prgm\Surveyor_Ruby\lib>dir
 Volume in drive C has no label.
 Volume Serial Number is AAAA-BBBB

 Directory of C:\Documents\Prgm\Surveyor_Ruby\lib

10/09/2010  06:32 PM    <DIR>          .
10/09/2010  06:32 PM    <DIR>          ..
10/08/2010  03:22 PM             5,462 main (commented).rb
10/08/2010  03:41 PM                92 question.rb
10/08/2010  09:06 PM             2,809 survey.rb
10/09/2010  06:25 PM               661 surveyor.rb
10/08/2010  01:39 PM             1,546 test.rb
               5 File(s)         10,570 bytes
               2 Dir(s)  40,255,045,632 bytes free
Run Code Online (Sandbox Code Playgroud)

确认irb在正确的目录中:

C:\Documents\Prgm\Surveyor_Ruby\lib>irb
irb(main):001:0> Dir.pwd
=> "C:/Documents/Prgm/Surveyor_Ruby/lib"
Run Code Online (Sandbox Code Playgroud)

...但是irb无法加载survey.rb:

irb(main):002:0> require 'survey'
LoadError: no …
Run Code Online (Sandbox Code Playgroud)

ruby import irb require ruby-1.9.2

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

load在本地路径上工作,require则不工作

loadee.rb

puts '> This is the second file.'
Run Code Online (Sandbox Code Playgroud)

loaddemo.rb

puts 'This is the first (master) program file.'
load 'loadee.rb'
puts 'And back again to the first file.'
Run Code Online (Sandbox Code Playgroud)

当我跑"ruby loaddemo.rb",这工作正常.这两个文件都在同一个目录中,这就是我运行的目录.

但是,如果我将负载更改为require,并且有或没有扩展我得到:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load
 -- loadee.rb (LoadError)
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from loaddemo.rb:2:in `<main>'
Run Code Online (Sandbox Code Playgroud)

我的问题当然是,为什么在这种情况下不需要工作?它应该,对吗?加载并要求使用不同的路径?

Ruby版本1.9.2

ruby ruby-1.9.2

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

Ruby zerofill是一个字符串

在Ruby中编写一个用零填充的整数是很容易的:

sprintf( "%010d", 345 ) #=> "0000000345"
Run Code Online (Sandbox Code Playgroud)

但是当我尝试用零填充String时,我找不到一个简单的解决方案:

sprintf( "%010d", "12AD" ) #=> ArgumentError: invalid value for Integer(): "12AD"
sprintf( "%010s", "12AD" ) #=> "      12AD"
Run Code Online (Sandbox Code Playgroud)

我想获得:

sprintf( "%010s", "12AD" ) #=> "00000012AD"
Run Code Online (Sandbox Code Playgroud)

ruby printf ruby-1.9.2

22
推荐指数
1
解决办法
8945
查看次数

通过rvm为Ruby 1.9.2安装linecache19

我遇到了为ruby 1.9.2安装linecache19(ruby-debug19的依赖项)的问题

这是我的术语输出

$ rvm use 1.9.2
Using /home/bogdan/.rvm/gems/ruby-1.9.2-p180
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ rvm exec gem install linecache19 --backtrace
gem install linecache19 --backtrace

rvm 1.6.20 by Wayne E. Seguin (wayneeseguin@gmail.com) [https://rvm.beginrescueend.com/]

ERROR:  Error installing linecache19:
    linecache19 requires Ruby version >= 1.9.2.
ERROR:  Error installing linecache19:
    linecache19 requires Ruby version >= 1.9.2.
Building native extensions.  This could take a while...
Run Code Online (Sandbox Code Playgroud)

最后一个命令永远挂起,直到被^ C中断.

任何想法如何解决?

gem rvm linecache ruby-1.9.2

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

如何在Rails 3中创建ActiveRecord无表格模型

我正在尝试创建一个Active Record无表格模型.我的user.rb看起来像这样

class User < ActiveRecord::Base

  class_inheritable_accessor :columns

  def self.columns
    @columns ||= [];
  end

  def self.column(name, sql_type = nil, default = nil, null = true)
    columns << ActiveRecord::ConnectionAdapters::Column.new(
      name.to_s,
      default,
      sql_type.to_s,
      null
    )
  end


  column :name, :text
  column :exception, :text
  serialize :exception      
end
Run Code Online (Sandbox Code Playgroud)

在控制器中创建新对象时

@user = User.new

我收到了错误

Mysql2 ::错误:表'Sampledb.users'不存在:SHOW FIELDS FROM users

activerecord model ruby-on-rails-3 ruby-1.9.2

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

安装debugger-linecache时出错:错误:无法构建gem原生扩展

我试图捆绑安装,但它显示上述错误或调试程序..请从终端找到详细的错误

Installing debugger-linecache (1.1.1) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/ruby/bin/ruby extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
Makefile creation failed
************************************************************************** 
No source for ruby-1.9.2-p0 provided with debugger-ruby_core_source gem.
**************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog …
Run Code Online (Sandbox Code Playgroud)

ruby-1.9.2 ruby-on-rails-3.1

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