标签: ruby-1.9.2

文件:类的未定义方法`copy'

我刚刚将一个项目升级到Ruby 1.9.2,并且以下行使用'undefined method`copy'为File:Class'崩溃了应用程序

File.copy(animage.image.path(:export), destfile)
Run Code Online (Sandbox Code Playgroud)

我在这个模块中加载了以下库

require 'zip/zipfilesystem'
require 'iconv'
require 'net/ftp'
require 'fileutils'
Run Code Online (Sandbox Code Playgroud)

ruby-1.9.2

10
推荐指数
1
解决办法
3424
查看次数

Ruby 1.9.2导出CSV字符串而不生成文件

我根本无法获得文档中 "写入" 示例下的"To a String"示例.

ruby -v返回:ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-darwin10.8.0]

我无法工作的文档中的示例如下:

csv_string = CSV.generate do |csv|
    csv << ["row", "of", "CSV", "data"]
    csv << ["another", "row"]
end
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

wrong number of arguments (0 for 1)
Run Code Online (Sandbox Code Playgroud)

所以看起来我错过了一个论点,在这里的文档中它指出:

This method wraps a String you provide, or an empty default String
Run Code Online (Sandbox Code Playgroud)

但是当我传入一个空字符串时,它会给我以下错误:

No such file or directory - 
Run Code Online (Sandbox Code Playgroud)

我不打算生成一个csv文件,我只是想创建一个csv字符串,我将其作为文本发送给用户.

ruby csv ruby-1.9.2

9
推荐指数
1
解决办法
6135
查看次数

如何在Mac OSX 10.7.3 LION上安装带有RVM的Ruby 1.9.2?

我正在关注Ruby on Rails教程,我很想安装Ruby 1.9.2.它已经被#compiling函数卡住了大约36个小时.我试图找到我的configure.log文件,但老实说我无法做到.

到目前为止我做了什么:1)已安装的XCode 2)安装了GCC 10.7v2

我用的命令:

RVM reloaded!
vinnies-macbook:~ vinnie$ rvm install 1.9.2 --with-gcc=clang
Fetching yaml-0.1.4.tar.gz to /Users/vinnie/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/vinnie/.rvm/src
Configuring yaml in /Users/vinnie/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/vinnie/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/vinnie/.rvm/usr
clang: error: unsupported option '--with-libyaml'
Building 'ruby-1.9.2-p318' using clang - but it's not (fully) supported, expect errors.
Installing Ruby from source to: /Users/vinnie/.rvm/rubies/ruby-1.9.2-p318, this may take a          while depending on your cpu(s)...

ruby-1.9.2-p318 - #fetching 
ruby-1.9.2-p318 - #extracted to /Users/vinnie/.rvm/src/ruby-1.9.2-p318 (already extracted)
ruby-1.9.2-p318 - …
Run Code Online (Sandbox Code Playgroud)

ruby macos rvm ruby-1.9.2

9
推荐指数
2
解决办法
7520
查看次数

使用ruby-1.9.2添加错误

当我添加,0.1+0.2我得到了0.30000000000000004,但当我添加相同的数字,ruby 1.8.7我得到了正确的答案0.3.我得到0.3四舍五入,但我只是想0.3ruby 1.9.2通过增加0.10.2

ruby floating-accuracy ruby-1.9.2

7
推荐指数
2
解决办法
820
查看次数

单表继承与embeds_one mogoid

我有一个模特

class Post
  include Mongoid::Document
  include Mongoid::Timestamps

  embeds_one :comment
end
Run Code Online (Sandbox Code Playgroud)

我有评论课

class Comment
  include Mongoid::Document
  include Mongoid::Timestamps

  embedded_in :post

  field :title
  field :description
end
Run Code Online (Sandbox Code Playgroud)

我有另一个继承自评论的类

class RecentComment < Comment
  # certain methods
end
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够创建RecentComment经过post,如果我做Post.last.build_comment(:_type => "RecentComment")了新的注释不会的_type:"RecentComment",同样如果我这样做Post.last.build_recent_comment,它给了我错误说某事像undefined method build_recent_comment for Post class.如果postreferences_many :comments我应该做的Post.last.build_comments({}, RecentComment),没有任何问题.但RecentComment在这种情况下,我不知道如何使用类构建对象.如果有人可以帮助那就是gr8!

注意:我正在使用 gem 'mongoid', '~> 2.0.1'

ruby-on-rails single-table-inheritance mongoid ruby-1.9.2

7
推荐指数
1
解决办法
1479
查看次数

Rails 3.1不重新加载更改的视图

我在Ruby 1.9.2应用程序中看到了一个错误/功能.对视图(而不是ruby文件)的任何更改都需要重新启动服务器.我最初在Rails应用程序中遇到过这个问题,但我也在最小的Sinatra应用程序中测试了同样的东西.

我将包含一个简单的应用程序来演示

# testapp.rb
require 'sinatra'

get '/' do
  [0,1,2].to_s  #change this to [0,1].to_s
end
Run Code Online (Sandbox Code Playgroud)

这是我的程序:

  • ruby testapp.rb (为我运行瘦服务器)
  • 加载页面
  • 打开文件并编辑视图
  • 重新加载页面(我看不到任何更改)
  • 杀死服务器
  • 重启服务器(现在可见更改)

在过去的几个月里,我一直在使用Rails 3上的Ruby 1.8.7开发.必须在任何视图更改时重新启动服务器会严重降低开发速度.

我已经准备好了这个SO线程,但是在我的Rails版本(3.1.0 rc4)中,配置变量已根据该答案设置.另外,我可以使用Sinatra复制错误,因此看起来并非如此.

任何人都可以解释这个问题吗?

Ruby版本:ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-linux]服务器:瘦1.2.11(也用Sinatra/Webrick测试过)

编辑7/13,澄清 Sinatra是一个单独的问题 - 默认情况下禁用Sinatra的源重新加载.我用这段代码来测试行为:

require 'sinatra'
require 'sinatra/reloader'
require 'haml'

set :views, 'views'

get '/' do
end

get '/test' do
  haml :test
end
Run Code Online (Sandbox Code Playgroud)

有了这个,我做了一个文件:views/test.haml.在服务器运行时修改它确实在重新加载页面时显示更改.感谢Tiredpixel指出这一点

未解决的问题:为什么Ruby 1.9.2上的Rails 3.1没有重新加载视图?我能够加载ruby文件,但不能加载haml和erb文件.我最终重新启动服务器只是为了查看错误是否实际修复(或未修复),因为文件未正确加载.

编辑/解决方案(从我在接受的答案中的评论中复制):

问题在于 config/environments/development.rb

config.cache_classes = false
Run Code Online (Sandbox Code Playgroud)

即使我们检查了这是正确的,我们仍然有问题.我们在文件中进一步向下:

config.threadsafe! …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sinatra ruby-1.9.2

7
推荐指数
1
解决办法
2887
查看次数

从Ruby块中提取AST

是否有可能从Ruby本身获取块的AST?

我已经看过ParseTree和ruby_parser,但他们似乎都对Ruby 1.9.2有粗略的支持(从我读过的内容).我需要一些适合1.9.2的东西.

ruby reflection abstract-syntax-tree ruby-1.9.2

7
推荐指数
1
解决办法
1002
查看次数

Resque:每个队列一个工作者

我目前有一个Rails 3.0项目,Ruby 1.9.2和Resque.

我的应用程序有多个工作类和多个队列,它们是动态创建的(在运行时).此外,还有多个工作人员可以在任何队列上自由工作,因为在开始时没有任何现有队列,并且无法预测:

$ COUNT=3 QUEUE=* rake resque:workers
Run Code Online (Sandbox Code Playgroud)

根据projectid 创建的队列:

@queue = "project_#{project.id}".to_sym
Run Code Online (Sandbox Code Playgroud)

对于给定的队列,他们的工作必须按顺序处理,一次处理一个.我的问题是,通过拥有多个工作人员,可以并行处理多个工作.

有没有办法设置每个队列的最大工作数(为1)?有没有办法在作业处理时锁定队列?

谢谢!

ruby resque ruby-on-rails-3 ruby-1.9.2

7
推荐指数
1
解决办法
3202
查看次数

(对象不支持#inspect)

我有一个简单的案例,涉及两个模型类:

class Game < ActiveRecord::Base
  has_many :snapshots

  def initialize(params={})
   # ...
  end
end

class Snapshot < ActiveRecord::Base
  belongs_to :game

  def initialize(params={})
  # ...
  end
end
Run Code Online (Sandbox Code Playgroud)

通过这些迁移:

class CreateGames < ActiveRecord::Migration
  def change
    create_table :games do |t|
      t.string :name
      t.string :difficulty
      t.string :status

      t.timestamps
    end
  end
end

class CreateSnapshots < ActiveRecord::Migration
  def change
    create_table :snapshots do |t|
      t.integer :game_id
      t.integer :branch_mark
      t.string  :previous_state
      t.integer :new_row
      t.integer :new_column
      t.integer :new_value

      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果我尝试在rails控制台中创建一个Snapshot实例,请使用

Snapshot.new
Run Code Online (Sandbox Code Playgroud)

我明白了

(Object doesn't support #inspect)
Run Code Online (Sandbox Code Playgroud)

现在是好的一部分.如果我在snapshot.rb中注释掉initialize方法,那么Snapshot.new可以工作.为什么会这样? …

ruby-1.9.2 ruby-on-rails-3.1

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

Heroku db:pull Taps Load Error:没有这样的文件加载 - pg

我使用ruby 1.9.2-p320和Heroku的Taps一起使用'db'命令得到以下错误,例如:

heroku db:pull --app my-app
Run Code Online (Sandbox Code Playgroud)

这会产生如下错误:

Taps Load Error: no such file to load -- sqlite3
Run Code Online (Sandbox Code Playgroud)

-要么-

Taps Load Error: no such file to load -- pg
Run Code Online (Sandbox Code Playgroud)

(是的,顺便说一下,我拥有所有正确的宝石,包括postgres - 本地运行良好 - 和sqlite3,以及卸载,重新安装和更新水龙头和heroku宝石,包括它们以及不包括它们将它们包含在我的Gemfile中.我正在运行Rails 3.2.6)

虽然有一个已知的错误会导致"时区位移"错误:heroku db:push not working,使用tap gem,我还没有看到任何直接解决此问题的SO帖子.

ruby heroku taps ruby-1.9.2 ruby-1.9.3

6
推荐指数
2
解决办法
3576
查看次数