javascript

java

python

c#

android

node.js

reactjs

c++

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

在类方法中使用实例变量-Ruby

我有一个类似下面的类,并且我使用了实例变量(数组)来避免使用很多方法参数。

它按我预期的那样工作,但这是一个好习惯吗?实际上,我不希望这样能起作用,但是我想类方法在其他语言中不能作为静态方法工作。

class DummyClass
  def self.dummy_method1
    @arr = []
    # Play with that array
  end

  def self.dummy_method2
    # use @arr for something else
  end
end
trans by 2020-01-19T21:46:38Z

ruby-在Rails应用程序中实现“记住我”

我的Rails应用程序有一个带有“记住我”复选框的登录框。 选中该复选框的用户即使关闭浏览器也应保持登录状态。 我通过将其ID存储在用户的会话中来跟踪用户是否已登录。

但是会话在Rails中作为会话cookie实现,但不是持久性的。 我可以使它们持久化:

class ApplicationController < ActionController::Base
  before_filter :update_session_expiration_date

  private

  def update_session_expiration_date
    options = ActionController::Base.session_options
    unless options[:session_expires]
      options[:session_expires] = 1.year.from_now
    end
  end
end

但这似乎是一种骇客,对于如此常见的功能而言令人惊讶。 有什么更好的办法吗?

编辑

Gareth的答案非常好,但是我仍然希望熟悉Rails 2的人提供答案(因为它是唯一的CookieSessionStore)。

trans by 2020-01-19T06:07:46Z

如何在Ruby中使类构造函数私有?

class A
private
  def initialize
    puts "wtf?"
  end
end

A.new #still works and calls initialize

class A
private
  def self.new
    super.new
  end
end

完全不起作用

那么正确的方法是什么? 我想将new设为私有,并通过工厂方法调用它。

trans by 2020-01-18T23:20:25Z

Ruby,生成一个随机的十六进制

如何使用红宝石生成随机的十六进制颜色?

trans by 2020-01-18T21:10:42Z

ruby-在rails 5.1及更高版本中,代替“ render:text”(和“ render none:true”)使用什么?

Rails 5.1消除了以前不推荐使用的方法的全部负担。 其中有老朋友render :text

当您需要渲染一些文本,但又不想增加视图模板的开销时,它非常有用。 例子:

render text: "ok"
render text: t('business_rules.project_access_denied'), status: 401

用什么代替呢?

trans by 2020-01-18T05:19:29Z

Ruby总是四舍五入

我觉得自己像个疯子。 我想将所有分数四舍五入到最接近的整数。

例如67/30 = 2.233333333334。 我想将其四舍五入为3。如果结果不是整数,我永远不想四舍五入,只想四舍五入。

这是我正在尝试的:

puts 67/30.to_f.ceil

以下是我要寻找的示例:

  • 67/30 = 3
  • 50/100 = 1
  • 2/2 = 1

有任何想法吗? 非常感谢!

trans by 2020-01-18T04:59:27Z

红宝石-在不同的换行符上拆分

现在,我正在对字符串执行\r\n,并假设来自用户的换行符是\n,如下所示:

string.split(/\r\n/)

我想做的是拆分为\r\n或仅\n

那么,正则表达式将如何拆分其中两个呢?

trans by 2020-01-18T02:23:17Z

红宝石-为什么显式收益在Proc中有所作为?

def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  b = Proc.new { "return from bar from inside proc" }
  b.call # control leaves bar here
  return "return from bar" 
end

puts foo # prints "return from foo from inside proc" 
puts bar # prints "return from bar" 

我认为return关键字在Ruby中是可选的,无论您是否要求,您总是return。 鉴于此,我感到惊讶的是2770423098101564417和bar具有不同的输出,这取决于fooProc f中包含显式的return

有谁知道为什么会这样吗?

trans by 2020-01-18T01:58:21Z

ruby-在Rails中使用attr_accessor

您何时在Rails模型中使用attr_reader/attr_writer/attr_accessor

trans by 2020-01-18T01:39:27Z

红宝石中的增量变量

这个问题已经在这里有了答案:

  • Ruby为什么不支持i ++或i--(增减运算符)?                                     9个答案

在Java中,类似i++的内容会将i的值增加1。

我该如何在Ruby中进行操作? 当然有比i = i + 1更好的方法了吗?

trans by 2020-01-17T21:43:30Z

从Ruby中的变量创建哈希键?

这个问题已经在这里有了答案:

  • 使用变量作为键访问Ruby哈希                                     2个答案

我有一个变量id,我想将其用作哈希中的键,以便分配给变量的值用作哈希的键。

例如,如果我具有变量:id,则所需的结果哈希将为'foo'

我试着用创建哈希

{
  id: 'foo'
}

但这是行不通的,相反会导致符号:id'foo'的哈希。

我本可以发誓我以前曾经做过,但是我完全是空白。

trans by 2020-01-17T05:12:35Z

ruby-如何测试数组中的所有项目是否相同?

我可以生成几行代码来执行此操作,但是我想知道是否存在一种不错的干净的Rubyesque方式。 如果我不清楚,我正在寻找的是一个数组方法,如果给定(例如)[3,3,3,3,3]["rabbits","rabbits","rabbits"],它将返回true,但是将以[1,2,3,4,5]["rabbits","rabbits","hares"]返回false。

谢谢

trans by 2020-01-16T22:56:27Z

javascript-小胡子模板可以做模板扩展吗?

我是Moustache的新手。

许多模板语言(例如Django / Jinja)都可以让您扩展“父”模板,例如...

base.html

<html><head></head>
    <body>
    {% block content %}{% endblock %}
    </body>
</html>

frontpage.html

{% extends "base.html" %}
{% block content %}<h1>Foobar!</h1>{% endblock %}

呈现的frontpage.html

<html><head></head>
    <body>
    <h1>Foobar!</h1>
    </body>
</html>

我知道小胡子的局部(例如{{>content}}),但这些似乎只是其中的一部分。

胡子是否存在模板扩展名? 否则,至少存在某种设计模式可以有效地将其包含转换为模板扩展等效项。

trans by 2020-01-16T15:14:26Z

ruby-Rails控制台,RVM和readline出现问题

我已经安装了rvm,以确保我的ruby本地开发版本与我正在处理的特定应用程序(红宝石1.8.7)的服务器版本相同。 我已完成此操作,并安装了ruby 1.8.7。 但是,当我尝试启动Rails控制台时,出现此错误:

Readline was unable to be required, if you need completion or history install readline then reinstall the ruby.
You may follow 'rvm notes' for dependencies and/or read the docs page http://rvm.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries.
Couldn't load Wirble: no such file to load -- wirble

我已阅读页面上错误所指的注释([http://rvm.beginrescueend.com/packages/readline/),],并按照说明进行操作,其中包括基本安装readline,卸载ruby 1.8.7,然后 在readline支持下再次安装ruby 1.8.7。 (实际上,该页面以ruby 1.9.2为例,但我假设它也应与1.8.7一起使用。也许并非如此)。

但是,我仍然遇到相同的错误。 有没有其他人经历过这个并找到答案了?
感谢任何建议-最高

编辑-如果相关,我正在使用Ubuntu 9.10 btw。

编辑-这是我对rvm info的输出,如下所示:

$ rvm info

system:

  system:
    uname:       "Linux max-laptop 2.6.31-22-generic #68-Ubuntu SMP Tue Oct 26 16:38:35 UTC 2010 i686 GNU/Linux"
    bash:        "/bin/bash => GNU bash, version 4.0.33(1)-release (i486-pc-linux-gnu)"
    zsh:         " => not installed"

  rvm:
    version:      "rvm 1.1.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]"

  homes:
    gem:          "not set"
    ruby:         "not set"

  binaries:
    ruby:         "/usr/bin/ruby"
    irb:          "/usr/bin/irb"
    gem:          "/usr/bin/gem"
    rake:         "/usr/bin/rake"

  environment:
    PATH:         "/home/max/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin:/home/max/software/svnmerge:/home/max/.gem/ruby/1.8/bin:/home/max/work/e_learning_resource/trunk/public/assets/dvd_files/bin:/opt/firefox:/home/max/.rvm/bin:/home/max/.rvm/bin"
    GEM_HOME:     ""
    GEM_PATH:     ""
    MY_RUBY_HOME: ""
    IRBRC:        ""
    RUBYOPT:      ""
    gemset:       ""
trans by 2020-01-16T15:08:29Z

bundle-如何在捆绑程序上下文中运行ruby脚本?

我有一个名为foo.rb的Ruby脚本,我想在捆绑程序环境的上下文中运行它。 怎么样?

bundle exec foo.rb不起作用,因为exec需要一个shell脚本。

trans by 2020-01-16T07:29:38Z

红宝石-正则表达式中的`?i`和`?-i`是什么意思?

有人可以解释一下testTEST用正则表达式包装一个词是什么意思吗?

(?i)test(?-i)

我进行了测试,它与testTESTteSt匹配。但是我之前从未见过。 i之前的?是什么意思? 我在这里看到了。

trans by 2020-01-16T02:32:22Z

如何在Ruby的IRB中启用自动完成功能

当我使用Merb的内置控制台时,我会得到类似于标准bash提示的选项卡自动完成功能。 我觉得这很有用,并希望在非Merb IRB会议上启用它。 如何在IRB中获得自动完成功能?

trans by 2020-01-15T22:10:28Z

ruby on rails-ActiveRecord :: Base:Class的未定义方法raise_in_transactional_callbacks ='(NoMethodError)

在写这个问题之前,我查看了这些答案,但是找不到解决方法。

执行Rails生成支架时出错用户名:字符串电子邮件:字符串

耙子流产了! ActiveRecord :: Base:Class的未定义方法'migration_error ='

启动Rails服务器时出错:未定义的方法'configure'


当我尝试启动一个新应用程序(针对Hartl的教程,第2章)时,在脚手架启动阶段,出现如下错误:

**undefined method `configure' for #<SampleApp2::Application:0x00000101a74610> (NoMethodError)**

但是由于上面的示例,我编辑了development.rb文件:

DemoApp::Application.configure do

(是的,我的应用程序名为demo_app,所以我改变了它的名称)。

之后,我尝试再次运行脚手架,但出现了新错误:

**method_missing': undefined method raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)**

针对类似情况,指示了一种迁移方法-应将其从文件development.rb中删除。 同样,我试图在此文件中找到raise_in_transactional_callbacks方法,但它不存在!另外,我会说在cmd中产生的完整代码非常大:

C:\Sites\demo_app>rails generate scaffold User name:string email:string
invoke  active_record
C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing': undefined method `raise_in_transactional_callbacks=' for ActiveRecord::Base:Class (NoMethodError)
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:166:in `block (3 levels) in <class:Railtie>'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `each'
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/activerecord-4.0.2/lib/active_record/railtie.rb:165:in `block (2 levels) in <class:Railtie>'
…
from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-4.0.2/lib/rails/commands.rb:48:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'

...(省略号)-特别剪切类似的代码。就这样。 我将不胜感激!

trans by 2020-01-15T15:50:34Z

require-Ruby NOT Rails中是否有一个复数函数?

我正在编写一些Ruby代码,而不是Rails,并且我需要处理以下内容:

found 1 match
found 2 matches

我已经安装了Rails,因此也许可以在脚本顶部添加require子句,但是有人知道RUBY方法可以将字符串复数吗? 如果脚本不是Rails但我安装了Rails,是否可以要求我提供一个可以处理的类?

编辑:所有这些答案都接近,但我检查了一个对我有用的答案。在编写Ruby而不是Rails代码时,请尝试使用以下方法作为帮助程序:

def pluralize(number, text)
  return text.pluralize if number != 1
  text
end
trans by 2020-01-15T15:33:38Z

Ruby 2.4和Rails 4堆栈级别太深(SystemStackError)

我正在尝试在Rails 4.0.8中运行新创建的项目,但收到错误:

    rails s
=> Booting WEBrick
=> Rails 4.0.8 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Fixnum is deprecated
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Bignum is deprecated
Exiting
/usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:124:in `block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
    from /usr/local/lib/ruby/gems/2.4.0/gems/activesupport-4.0.8/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
     ... 5532 levels...
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-4.0.8/lib/rails/commands.rb:71:in `tap'
    from /usr/local/lib/ruby/gems/2.4.0/gems/railties-4.0.8/lib/rails/commands.rb:71:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Ruby版本:

Rails 4.0.8

我的Gemefile:

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.8'

# Use sqlite3 as the database for Active Record
gem 'sqlite3'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.2'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'
gem 'json', github: 'flori/json', branch: 'v1.8'
group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

我尝试重新安装Rails,因为在我的机器上安装5.0 Rails之前。

本地宝石:

*** LOCAL GEMS ***

autoprefixer-rails (6.6.0)
coffee-rails (4.2.1, 4.0.1)
font-awesome-rails (4.7.0.1)
jquery-atwho-rails (1.3.2)
jquery-rails (4.2.2, 3.1.4)
rails (4.0.8, 4.0.0)
rails-dom-testing (2.0.2)
rails-html-sanitizer (1.0.3)
rails_12factor (0.0.3)
rails_serve_static_assets (0.0.5)
rails_stdout_logging (0.0.5)
sass-rails (5.0.6, 4.0.5)
sprockets-rails (3.2.0, 2.3.3, 2.0.1)

Meybe Unistall:红宝石和Rails将解决此问题,但我不想这样做。 简而言之,我希望为示例杆安装两种版本的导轨:以及导轨4和5。 这种配置可行吗?

trans by 2020-01-15T11:59:58Z

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