Questions tagged «ruby»

Ruby是由松本行弘(Matz)于1995年创建的一种多平台开放源代码,动态的,面向对象的解释性语言。[ruby]标记用于与Ruby语言有关的问题,包括其语法和库。Ruby on Rails问题应标记为[ruby-on-rails]。

2
GEM_HOME和GEM_PATH有什么区别?
RubyGems是Ruby编程语言的软件包管理器,它提供了用于分发Ruby程序和库的标准格式(采用称为“ gem”的独立格式),旨在轻松管理gems安装的工具以及用于以下目的的服务器:分发它们。它类似于Python编程语言的EasyInstall。RubyGems现在是Ruby 1.9版标准库的一部分。 也就是说,GEM_HOME和GEM_PATH有什么区别?
76 ruby  rubygems 

7
如何在Ruby中实现“回调”?
我不确定Ruby中C风格回调的最佳用法-还是有更好的东西(不太像C)。在C语言中,我将执行以下操作: void DoStuff( int parameter, CallbackPtr callback ) { // Do stuff ... // Notify we're done callback( status_code ) } Ruby的等效功能是什么?本质上,当“ DoStuff”中满足某个条件时,我想调用传入的类方法
76 ruby  callback 

4
按Ruby中的哈希值降序排序
我的输入哈希: h = { "a" => 20, "b" => 30, "c" => 10 } 升序排序: h.sort {|a,b| a[1]<=>b[1]} #=> [["c", 10], ["a", 20], ["b", 30]] 但是我需要 [["b", 30], ["a", 20], ["c", 10]] 我们如何使它反过来起作用,这<=>是什么意思?
76 ruby  sorting  hash 

5
从Rakefile执行bash命令
我想从中执行许多bash命令Rakefile。 我已经尝试了以下内容 Rakefile task :hello do %{echo "World!"} end 但是执行rake hello时没有输出?如何从Rakefile执行bash命令? 注意:这不是重复的,因为它专门询问如何从Rakefile执行bash命令。
76 ruby  bash  rake 

10
Rails:更新模型属性而不调用回调
我有一个具有:credits属性的用户模型。我想要一个简单的按钮,通过名为“ add”的路由将5加到用户的信用中,以便/ users / 3 / add将5加到用户id = 3的信用中。 def add @user = User.find(params[:id]) @user.credits += 5 redirect_to root_path end 那是我控制器的相关部分。问题是,我不想调用@ user.save,因为我有一个before_save回调,它根据当前UTC时间重新加密用户密码。我只想简单地在属性中添加5并避免回调,我从未想到过如此简单的事情可能会如此困难。 编辑: 我将回调更改为:before_create,这是我的新控制器代码(相关部分): def add @user = User.find(params[:id]) @user.add_credits(5) @user.save flash[:success] = "Credits added!" redirect_to root_path end 这是我在模型中的代码: def add_credits(num) self.credits = num end 编辑2: 好的,这是一个验证问题,无法使“ EDIT”中的更改生效,但我仍然很乐意回答不使用回调进行更新的原始问题!

6
可以在Ruby中使用分号吗?
在学习Ruby时,我注意到在所有示例中都没有分号。我知道,只要每个语句独立行,这都很好。但我想知道是,可你在Ruby中使用分号?
76 ruby  syntax 

3
为什么Ruby setter需要“自我”。班内资历?
Ruby设置方法(无论是由(c)attr_accessor手工创建还是由手工创建),似乎是self.在类内部进行访问时唯一需要限定的方法。这似乎使Ruby成为语言的世界: 所有方法都需要self/ this(例如Perl,我认为是Javascript) 没有方法需要self/this是(C#,Java) 只有设置员需要self/ this(Ruby吗?) 最好的比较是C#与Ruby,因为这两种语言都支持访问器方法,这些访问器方法在语法上类似于类实例变量:foo.x = y,y = foo.x。C#称它们为属性。 这是一个简单的例子;在Ruby中使用相同的程序,然后使用C#: class A def qwerty; @q; end # manual getter def qwerty=(value); @q = value; end # manual setter, but attr_accessor is same def asdf; self.qwerty = 4; end # "self." is necessary in ruby? def xxx; asdf; end …
76 ruby 

19
如何解决“您的Ruby版本是1.9.3,但是您的Gemfile指定了2.0.0”
我创建了一个Ruby项目,但在运行时bundle update,并bundle install返回一个错误: Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0 它的图像是:http : //i.imgur.com/dZMhI11.png?1 我的gemfile是: ruby '2.0.0' #ruby-gemset=railstutorial_rails_4_0 gem 'rails', '4.0.0' group :development do gem 'sqlite3', '1.3.8' end gem 'sass-rails', '4.0.0' gem 'uglifier', '2.1.1' gem 'coffee-rails', '4.0.0' gem 'jquery-rails', '3.0.4' gem 'turbolinks', '1.1.1' gem 'jbuilder', '1.0.2' group :doc …

3
我应该在我的Gemfile中指定确切版本吗?
我注意到在rubygems.org上有很多宝石建议您使用主要版本而非确切版本来指定它们。例如... haml-rails宝石... gem "haml-rails", "~> 0.3.4" # "$ bundle install" will acquire the # latest version before 1.0. 但是,根据Bundler文档,在我看来,最好像这样精确地确定版本... gem "haml-rails", "0.3.4" 因此,这里有您的haml-rails gem,其所有依赖项都不会向前漂移。如果几周后在另一台计算机上签出项目并运行,$ bundle install您将拥有与指定的所有版本完全相同的版本。 我看到过分发布会破坏东西,我认为Bundler整个想法的一部分就是“ Bundle.lock”所有宝石版本。 但是在rubygems.org上,他们经常使用“〜>”,所以也许我遗漏了一些东西? 任何澄清对我理解邦德勒和宝石管理都将非常有帮助。


2
在Rails快捷方式中检查是否非零且不为空?
我为用户提供了一个显示页面,并且每个属性仅在该页面上可见,如果它不是nil且不是空字符串。在下面,我有我的控制器,@user.city != nil && @user.city != ""为每个变量编写同一行代码非常烦人。我对创建自己的方法不太熟悉,但是我可以以某种方式创建快捷方式来执行以下操作:@city = check_attr(@user.city)吗?还是有缩短此过程的更好方法? users_controller.rb def show @city = @user.city != nil && @user.city != "" @state = @user.state != nil && @user.state != "" @bio = @user.bio != nil && @user.bio != "" @contact = @user.contact != nil && @user.contact != "" @twitter = …

5
在Ruby的Kernel类中添加assert()方法是否是惯用的Ruby?
我通过在Ruby中编码等效于Kent Beck的xUnit来扩展我对Ruby的理解。Python(由Kent编写)以广泛使用的语言提供了assert()方法。Ruby没有。我认为添加它应该很容易,但是Kernel是否正确放置它? 顺便说一句,我知道Ruby中存在各种Unit框架-这是一种学习Ruby习惯用法的练习,而不是“完成某些工作”。
76 ruby  assert  xunit 

7
Ruby多字符串替换
str = "Hello☺ World☹" 预期输出为: "Hello:) World:(" 我可以做这个: str.gsub("☺", ":)").gsub("☹", ":(") 还有其他方法可以让我在单个函数调用中完成此操作吗?就像是: str.gsub(['s1', 's2'], ['r1', 'r2'])
75 ruby  string  gsub 

10
更改存储库URL后,Capistrano部署失败
我从Git仓库通过capistrano进行了简单部署。最初,我是从GitHub部署的,一切正常。但是后来我将存储库移至BitBucket,现在我得到了 fatal: Could not parse object '9cfb...'. 我换衣服后问题就消失了 set :deploy_via, :remote_cache 至 set :deploy_via, :copy 但这不能解决问题,只能绕过它。有什么办法可以告诉Capistrano删除旧的缓存?

7
Rails-最佳实践:如何创建依赖的has_one关系
您能告诉我创建has_one关系的最佳实践是什么吗? fe,如果我有一个用户模型,并且必须有一个配置文件... 我该怎么办呢? 一种解决方案是: # user.rb class User << ActiveRecord::Base after_create :set_default_association def set_default_association self.create_profile end end 但这似乎并不干净……有什么建议吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.