我刚刚将一个项目升级到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) 我根本无法获得文档中 "写入" 示例下的"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 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) 当我添加,0.1+0.2
我得到了0.30000000000000004
,但当我添加相同的数字,ruby 1.8.7
我得到了正确的答案0.3
.我得到0.3
四舍五入,但我只是想0.3
上ruby 1.9.2
通过增加0.1
和0.2
我有一个模特
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
.如果post
有references_many :comments
我应该做的Post.last.build_comments({}, RecentComment)
,没有任何问题.但RecentComment
在这种情况下,我不知道如何使用类构建对象.如果有人可以帮助那就是gr8!
注意:我正在使用 gem 'mongoid', '~> 2.0.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本身获取块的AST?
我已经看过ParseTree和ruby_parser,但他们似乎都对Ruby 1.9.2有粗略的支持(从我读过的内容).我需要一些适合1.9.2的东西.
我目前有一个Rails 3.0项目,Ruby 1.9.2和Resque.
我的应用程序有多个工作类和多个队列,它们是动态创建的(在运行时).此外,还有多个工作人员可以在任何队列上自由工作,因为在开始时没有任何现有队列,并且无法预测:
$ COUNT=3 QUEUE=* rake resque:workers
Run Code Online (Sandbox Code Playgroud)
根据project
id 创建的队列:
@queue = "project_#{project.id}".to_sym
Run Code Online (Sandbox Code Playgroud)
对于给定的队列,他们的工作必须按顺序处理,一次处理一个.我的问题是,通过拥有多个工作人员,可以并行处理多个工作.
有没有办法设置每个队列的最大工作数(为1)?有没有办法在作业处理时锁定队列?
谢谢!
我有一个简单的案例,涉及两个模型类:
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-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-1.9.2 ×10
ruby ×6
csv ×1
heroku ×1
macos ×1
mongoid ×1
reflection ×1
resque ×1
ruby-1.9.3 ×1
rvm ×1
sinatra ×1
taps ×1