小编KL-*_*L-7的帖子

在Ruby中获取当前堆栈跟踪而不会引发异常

我想在Rails 3应用程序中记录当前的回溯(stacktrace)而不会发生异常.知道怎么样?

我为什么要这个?我正在尝试跟踪Rails查找模板时所做的调用,以便我可以选择要覆盖的进程的一部分(因为我想更改我的特定子类控制器的视图路径).

我想从文件中调用它:gems\actionpack-3.2.3\lib\action_dispatch\middleware\templates\rescues\missing_template.erb.我知道这不是最佳实践,但我知道它是堆栈的下游,从那里搜索模板.

ruby stack-trace

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

如何在Ruby中获取数组的最后一个元素?

例:

a = [1, 3, 4, 5]
b = [2, 3, 1, 5, 6]
Run Code Online (Sandbox Code Playgroud)

如何在不使用和的情况下获取5数组中的最后一个值a或数组中的最后一个值?6ba[3]b[4]

ruby arrays

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

Rails迁移:self.up和self.down与change

看起来新的rails版本与self.up和self.down方法有"变化".

那么,当必须回滚迁移时会发生什么,它如何知道要执行的操作.我需要基于在线教程实现以下方法:

class AddImageToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :image_file_name, :string
    add_column :users, :image_content_type, :string
    add_column :users, :image_file_size, :integer
    add_column :users, :image_updated_at, :datetime
  end

  def self.down
    remove_column :users, :image_file_name, :string
    remove_column :users, :image_content_type, :string
    remove_column :users, :image_file_size, :integer
    remove_column :users, :image_updated_at, :datetime
  end    
end
Run Code Online (Sandbox Code Playgroud)

如何使用新的更改方法执行相同的操作?

migration ruby-on-rails

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

Ruby Rspec:测试实例变量而不添加源的访问器

我正在尝试测试以下方法:

def unprocess_move(board, move)
  if move[0].instance_of?(Array)
    multi_move = @multi_move.pop(2).reverse
    multi_move.each do |single_move|
      unapply_move(board, single_move)
    end
  else
    board = unapply_move(board, move)
  end
  board
end
Run Code Online (Sandbox Code Playgroud)

我想为@multi_move设置状态,但我不想添加一个仅用于测试的访问器.没有访问器有没有办法这样做?谢谢.

ruby rspec instance-variables

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

如何找到与正则表达式重叠的匹配?

>>> match = re.findall(r'\w\w', 'hello')
>>> print match
['he', 'll']
Run Code Online (Sandbox Code Playgroud)

因为\ w\w意味着两个字符,'他'和'll'是预期的.但为什么'el'和'lo' 与正则表达式匹配?

>>> match1 = re.findall(r'el', 'hello')
>>> print match1
['el']
>>>
Run Code Online (Sandbox Code Playgroud)

python regex overlapping

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

ArgumentError:您需要提供至少一个验证:if

我有一个简单的模型

class Task < ActiveRecord::Base
  validates :deadline, :if => :deadline_in_future?

  def deadline_in_future?
    Date.today < self.deadline
  end
end
Run Code Online (Sandbox Code Playgroud)

一切似乎都好,但是当我在我的rails控制台时

irb(main):001:0> Task.new
ArgumentError: You need to supply at least one validation
Run Code Online (Sandbox Code Playgroud)

问题出在哪儿?

validation ruby-on-rails ruby-on-rails-3.1

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

使用Ruby将文件从一个目录复制到另一个目录

嘿我正在尝试将多个文件从一个文件夹移动到另一个文件夹.在FileUtils行中,我尝试搜索目标文件夹中的所有4个字符文件夹,然后将该文件粘贴到与文件具有相同基本名称的文件夹中.

#!/usr/bin/env ruby

require 'fileutils'

my_dir = Dir["C:/Documents and Settings/user/Desktop/originalfiles/*.doc"]
my_dir.each do |filename| 
  FileUtils.cp(filename, "C:/Documents and Settings/user/Desktop/destinationfolder/****/" + File.basename(filename, ".doc"))
end
Run Code Online (Sandbox Code Playgroud)

ruby dir

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

为什么这种迁移不可逆转?(change_table,rename,text)

我认为这是一个非常简单的迁移.出于某种原因,IrreversibleMigration当我尝试db:rollback或时,我收到错误db:migrate:redo.

迁移顺利进行,但我宁愿保持可逆.我无法弄清楚为什么它不像书面那样.有任何想法吗?

这是迁移:

class AddWhyHypAndWhyHypeToStatements < ActiveRecord::Migration
  def change
    change_table :statements do |t|
      t.rename :description, :why_hypocritical
      t.text   :why_hypothetical
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

如果重要,"description"列是文本列.我正在使用Rails 3.1/Ruby 1.9.2/PostgreSQL.谢谢你的帮助.

migration activerecord ruby-on-rails

23
推荐指数
1
解决办法
4401
查看次数

的ActiveRecord :: SubclassNotFound

我正在尝试将我的redmine从1.3.0升级到2.0.0,但是我在数据库迁移方面遇到了问题.当我运行命令时:

rake db:migrate RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)

它显示了一个错误

rake aborted!
uninitialized constant RAILS_ENV
Run Code Online (Sandbox Code Playgroud)

我的错误日志是:

ActiveRecord::SubclassNotFound (The single-table inheritance mechanism failed to locate the subclass: 'GoogleAppsAuthSource'. This error is raised because the column 'type' is reserved for storing the class in case of inheritance. Please rename this column if you didn't intend it to be used for storing the inheritance class or overwrite AuthSource.inheritance_column to use another column for that information.):
app/models/user.rb:139:in `try_to_login'
app/controllers/account_controller.rb:143:in `password_authentication'
app/controllers/account_controller.rb:138:in `authenticate_user'
app/controllers/account_controller.rb:30:in `login'
Run Code Online (Sandbox Code Playgroud)

这是我在旧redmine中使用的插件列表:

  1. Google Apps插件

  2. Redmine Code …

ruby ruby-on-rails redmine

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

如何使所有模型属性可用于批量分配?

我使用此应用程序配置选项无法访问rails应用程序中的所有属性:

config.active_record.whitelist_attributes = true
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,我定义了一些我想要attr_accessible在模型中可访问的属性.如何使特定模型的所有属性都可访问.有点像attr_accessible :all.

activerecord ruby-on-rails

15
推荐指数
2
解决办法
9218
查看次数