javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

ruby-添加和删除参考的Rails迁移

使用rails generate migration AddClientToUser创建迁移文件后,我可以像这样编辑迁移文件:

class AddClientToUser < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.references :client
    end
  end

  def self.down
    change_table :users do |t|
      t.remove :client_id
    end
  end
end

这是反转迁移中添加的参考列的正确方法吗?

trans by 2020-08-12T09:15:54Z

红宝石-在Rsp中测试STDOUT输出

我正在尝试为此声明建立规范。 使用“ puts”很容易

print "'#{@file}' doesn't exist: Create Empty File (y/n)?"
trans by 2020-08-12T09:01:18Z

Ruby:模块,要求并包含

我正在尝试使用Ruby模块(mixins)。

我有test.rb:

#!/usr/bin/env ruby
require_relative 'lib/mymodule'

class MyApp
  include MyModule
  self.hallo
end

和lib / mymodule.rb:

module MyModule
  def hallo
    puts "hallo"
  end
end

相当简单的设置。 但这不起作用:(:

ruby test.rb
test.rb:8:in `<class:MyApp>': undefined method `hallo' for MyApp:Class (NoMethodError)
        from test.rb:6:in `<main>'

我的错误在哪里?

trans by 2020-08-12T05:27:09Z

如何判断我是从JRuby还是Ruby运行?

我有一个带有工厂方法的脚本,根据该脚本是从JRuby还是Ruby运行,我想返回某个类的不同实现。 有人对我如何从脚本内部分辨出任何区别有任何想法吗?

我最初的想法是:

  • 尝试“包含Java”并在失败时恢复到Ruby实现。 此方法无效。 Ruby足够聪明,无论我的开始/救援/结束如何,都会出错。

  • 对进程ID进行愚蠢的处理。 我宁愿避免这种情况,因为它总是感觉像是一种hack。

trans by 2020-08-11T23:02:47Z

红宝石-Rails 3.0中的f.error_messages

Rails 3.0已弃用f.error_messages,现在需要一个插件才能正常工作-但是,我想学习如何以(新的)本机方式显示错误消息。 我正在遵循入门指南,该指南在实现评论表单时使用了不推荐使用的方法。 例如:

<h2>Add a comment:</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
  <%= f.error_messages %>
<div class="field">
  <% f.label :commenter  %><br />
  <%= f.text_field :commenter  %>
</div>
<div class="field">
  <%= f.label :body %><br />
  <%= f.text_area :body %>
</div>
<div class="actions">
  <%= f.submit %>
</div>
<% end %>

这是正确的方法(由脚手架生成):

<%= form_for(@post) do |f| %>
  <% if @post.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>

      <ul>
      <% @post.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
 . . . 

我了解在后一个示例中使用了@post变量,但是在前一个示例中我引用了哪个变量来获取用于创建注释的错误消息?

trans by 2020-08-11T11:36:07Z

Ruby:继承与类变量一起使用的代码

情况:我有多个类,每个类应包含一个带有配置哈希的变量; 每个类的散列都不同,但一个类的所有实例都相同。

起初,我尝试过这样

class A
  def self.init config
    @@config = config
  end

  def config
    @@config
  end
end

class B < A; end
class C < A; end

但是很快注意到,它不会那样工作,因为@@ config是在A而不是B或C的上下文中保存的,因此:

B.init "bar"
p B.new.config  # => "bar"
p C.new.config  # => "bar" - which would be nil if B had it's own @@config

C.init "foo"
p B.new.config  # => "foo" - which would still be "bar" if C had it's own @@config
p C.new.config  # => "foo"

我想到这样使用它:

modules = [B, C]
modules.each do |m|
  m.init(@config[m.name])
end
# ...
B.new  # which should then have the correct config

现在,我很清楚为什么会发生这种情况,但是我不确定这种情况的原因。

它不能以其他方式工作,将类变量保存在子类的上下文中吗?

我还感到恼火的是,即使被称为“超类”,自我始终是子类。 因此,我首先希望超类的代码“在子类的上下文中执行”。

对此的一些启示将不胜感激。

另一方面,我可能不得不接受这种方式的工作,并且我必须找到另一种方式来做到这一点。

有没有一种“元”方式可以做到这一点? (我尝试了class_variable_set等,但没有运气)

或者,也许该“ init”方法的整个想法首先存在缺陷,并且还有其他“模式”可以做到这一点?

我可以将@@ config设置为哈希,保留所有配置,并始终选择正确的配置,但是我发现这有点尴尬..(不是通过继承来解决此类问题吗?;)

trans by 2020-08-10T21:36:59Z

regex-如何获取字符串中所有出现的Ruby正则表达式的匹配数据?

对于字符串中每个正则表达式的出现,我都需要MatchData。 这与“正则表达式的所有匹配项”中建议的扫描方法不同,因为这只会给我一个字符串数组(我需要完整的MatchData,以获取开始和结束信息,等等)。

input = "abc12def34ghijklmno567pqrs"
numbers = /\d+/

numbers.match input # #<MatchData "12"> (only the first match)
input.scan numbers  # ["12", "34", "567"] (all matches, but only the strings)

我怀疑有些方法被我忽略了。 有什么建议吗?

trans by 2020-08-10T18:11:08Z

dynamic-动态设置Ruby Obj的属性

如何在Ruby中动态设置对象属性,例如

def set_property(obj, prop_name, prop_value)
    #need to do something like > obj.prop_name = prop_value 

    #we can use eval but I'll prefer a faster/cleaner alternative:
    eval "obj.#{prop_name} = #{prop_value}"
end
trans by 2020-08-10T16:00:30Z

Ruby / Rails CSV解析,UTF-8中无效的字节序列

我正在尝试解析从Excel电子表格生成的CSV文件。

这是我的代码

require 'csv'
file = File.open("input_file")
csv = CSV.parse(file)

但是我得到这个错误

ArgumentError: invalid byte sequence in UTF-8

我认为错误是因为Excel将文件编码为ISO 8859-1 (Latin-1),而不是UTF-8

有人可以帮我解决此问题的方法吗

提前致谢。

trans by 2020-08-10T15:53:35Z

Ruby on Rails-警告:引用了顶级常量

我有四个模型(warning: toplevel constant Document referenced by Question::DocumentQuestionQuestion::DocumentAnswer)。 在我的Answer模型中

validates :text,
  presence: { :unless => Proc.new{ |a| a.question.is_a? Question::Document } }

这给了我警告

warning: toplevel constant Document referenced by Question::Document

如何防止发生此警告(不重命名我的班级)?

trans by 2020-08-10T08:26:55Z

ruby-在RSpec-2.11中使用带有`expect`的隐式`subject`

使用rspec-2.11中新的expect语法,如何使用隐式subject? 有没有像下面这样显式引用subject更好的方法?

describe User do
  it 'is valid' do
    expect(subject).to be_valid    # <<< can `subject` be implicit?
  end
end
trans by 2020-08-10T06:54:10Z

ruby-如何为Rails控制器添加延迟以进行测试?

我正在测试Web应用程序的前端,并且想测试在AJAX请求之间的各种转换如何出现以及各种延迟。 有什么方法可以将sleep(1500)添加到控制器中以延迟响应?

trans by 2020-08-10T00:56:29Z

我如何需要特定版本的红宝石宝石?

具体来说,就是ruby-oci8 gem。 我同时安装了1.0.7和2.0.4。 我想要1.0.7。

我只需要oci8,但没有得到想要的版本。

irb(main):001:0> require 'oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "2.0.4"

我可以要求使用文件的完整路径,该路径可以工作,但不能移植:

irb(main):001:0> require 'C:\Ruby\lib\ruby\gems\1.8\gems\ruby-oci8-1.0.7-x86-mswin32-60\lib\oci8'
=> true
irb(main):002:0> OCI8::VERSION
=> "1.0.7"

我可以使用gem命令来询问我想要的版本,但是它似乎并未真正加载该库:

irb(main):001:0> gem 'ruby-oci8', :lib=>'oci8', :version=>'=1.0.7'
=> true
irb(main):002:0> OCI8::VERSION
NameError: uninitialized constant OCI8
    from (irb):2

如果可以加载库,我肯定会喜欢最后一种方法,而不是仅仅确认它已存在于我的系统中。 我想念什么?

trans by 2020-08-10T00:11:19Z

宝石更新后:测试失败,并显示“未声明资产已在生产中预编译”

由于我更新了几个gem,因此所有测试均失败并显示以下错误:

ActionView :: Template :: Error:未声明资产已预编译 在生产中。

Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )添加到config/initializers/assets.rb并重新启动服务器

app / views / layouts / _faviconsheader.html.erb:14:in Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )

app / views / layouts / application.html.erb:21:in Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )

该错误似乎是指部分Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb ),其中包括以下行:

<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>

这部分加载在Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb中。

知道导致此错误的原因和处理方法吗? 在gem更新之前,所有测试均已通过。

我使用Rails 4.2.5。 更新的宝石之一是Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )(更新的链轮版本为3.5.2)。 我在github上读到了一些关于链轮4的问题,但我没有使用版本4。


附言 即使我将Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )添加到config/initializers/assets.rb,错误仍然存在。 但是,即使那样行得通,我也想了解为什么会出现此问题,除了更新某些gem之外无需进行任何更改。

trans by 2020-08-09T18:10:59Z

我如何绘制git repo的代码行历史记录?

基本上,我想在每次提交后获取存储库中的代码行数。

我发现的唯一(非常糟糕的)方法是使用git filter-branch运行.lines(),并在每次提交时运行git reset --hard的脚本,然后运行wc -l

为了更清楚一点,在运行该工具时,它将输出第一个提交的代码行,然后输出第二个提交的代码行,依此类推。 这就是我要工具输出的内容(例如):

me@something:~/$ gitsloc --branch master
10
48
153
450
1734
1542

我玩过ruby'git'库,但是找到的最接近的是在diff上使用.lines()方法,似乎它应该提供添加的行(但不会:例如,当您删除行时,它返回0 )

require 'rubygems'
require 'git'

total = 0
g = Git.open(working_dir = '/Users/dbr/Desktop/code_projects/tvdb_api')    

last = nil
g.log.each do |cur|
  diff = g.diff(last, cur)
  total = total + diff.lines
  puts total
  last = cur
end
trans by 2020-08-09T09:03:33Z

unix-如何在Ruby中使用(n)curses?

我想在Ruby中创建一个进度条以指示批处理作业的状态。

我已经阅读了一些有关使用(n)curses的教程/库,这些教程/库都没有特别有助于说明如何在终端中创建“动画化”进度条或使用Ruby使用curses。

我已经知道使用单独的线程来监视给定作业的进度,但我不确定该如何继续绘制进度条。


更新资料

ProgressBar类非常简单明了,完美解决了我的问题。

trans by 2020-08-09T08:47:51Z

ruby on rails-Post.all.map(&:id)是什么意思?

可能重复:
map(&:name)在Ruby中是什么意思?

Post.all.map(&:id) 

将返回

 => [1, 2, 3, 4, 5, 6, 7, ................] 

map(&:id)是什么意思? 特别是&

trans by 2020-08-09T06:58:26Z

Ruby:关联数组

Ruby on Rails是否具有关联数组?

例如:

   a = Array.new
   a["Peter"] = 32
   a["Quagmire"] = 'asdas'

在Ruby中创建这种数组结构的最简单方法是什么?

trans by 2020-08-09T04:27:50Z

设置Ruby变量(如果尚未定义)

在Ruby中,如何将变量设置为某个值(如果尚未定义),并保留当前值(如果已经定义)?

trans by 2020-08-09T03:51:15Z

ruby on rails-将数据库从一个heroku应用程序转移到另一个fas

有没有将我的生产数据库转移到测试应用程序的更快方法?

目前,我正在对本地计算机执行heroku db:pull,然后对heroku db:push --app testapp进行此操作,但这变得很耗时。 我有一些种子数据,但它的准确性不如简单地使用实际数据进行测试。 而且由于它们都存储在相邻的AWS云中,因此必须有一种更快的方法来移动数据吗?

我曾考虑过使用heroku捆绑软件,但我注意到animate命令消失了吗?

bundles:animate <bundle>     # animate a bundle into a new app 
trans by 2020-08-09T02:11:13Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共86页