标签: ruby

Ruby:如何卸载Devise?

我已经安装了Devise,现在想删除它,包括它生成的所有文件.我怎么做?

ruby devise

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

根据另一个数组的元素对数组进行排序

我有一系列的ID

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

我有另一个对象数组,其中id为随机顺序

a2 = [(obj_with_id_5), (obj_with_id_2), (obj_with_id_1), (obj_with_id_3), (obj_with_id_4)]  
Run Code Online (Sandbox Code Playgroud)

现在我需要根据a1中id的顺序对a2进行排序.所以a2现在应该成为:

[(obj_with_id_1), (id_2), (id_3), (id_4), (id_5)]  
Run Code Online (Sandbox Code Playgroud)

a1可能是[3,2,5,4,1]或任何顺序,但a2应对应于a1中id的顺序.

我喜欢这个:

a1.each_with_index do |id, idx|
  found_idx = a1.find_index { |c| c.id == id }
  replace_elem = a2[found_idx]
  a2[found_idx] = a2[idx]
  a2[idx] = replace_elem
end  
Run Code Online (Sandbox Code Playgroud)

但是如果a2的元素顺序正好与a1相反,那么这仍然可能会遇到O(n ^ 2)时间.有人可以告诉我最有效的排序方式吗?

ruby arrays sorting algorithm

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

检查Ruby HTTP响应是否成功

如何正确检查Net :: HTTP :: Get(例如)的响应是否为"成功"(即2xx返回码)?在这个简单的问题上,文档似乎很遗憾.

我有:

response=Net::HTTP.new( host, port ).request my_get_request # details not important
Run Code Online (Sandbox Code Playgroud)

经过一堆谷歌搜索和近乎随机的打字,我终于确定这是有效的:

response.class < Net::HTTPSuccess
Run Code Online (Sandbox Code Playgroud)

这实际上是规范的方式吗?

ruby

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

如何分解Ruby的长线

我总是在我的Rails顶部获得大量代码models.我正在寻找建议,以最好的方式打破标准的Ruby风格.例如,我现在看的一行是:

delegate :occupation, :location, :picture_url, :homepage_url, :headline, :full_name, :to => :profile, :prefix => true, :allow_nil => true
Run Code Online (Sandbox Code Playgroud)

打破这些长方法调用线的传统方式是什么?

ruby coding-style ruby-on-rails

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

Rails Activeadmin - 自定义关联选择框

在我的Rails应用程序中,我有以下模型:

class Idea < ActiveRecord::Base
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :ideas
end
Run Code Online (Sandbox Code Playgroud)

我正在为我的模型创建ActiveAdmin CRUD Idea,其自定义表单看起来像这样:

form do |f|
  f.inputs do
    f.input :member
    f.input :description
  end
end
Run Code Online (Sandbox Code Playgroud)

要求是为成员关联的内容提供自定义文本,即"#{last_name}, #{first_name}".是否可以自定义我的成员选择框来实现它?

任何帮助将不胜感激.

ruby ruby-on-rails activeadmin

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

Ruby命名约定?

例如,对于常量,它是:

THIS_CONSTANT

This_Constant

ThisConstant

或者是其他东西...?

事实上,这整个主题是否有任何(准)官方参考?

我也希望能够快速仔细检查以下问题:

  • Ruby本身强制执行哪些命名模式(例如,Constants 必须以大写开头,对吧?),这些只是简约(method_names应该是蛇形的,对吗?)?

  • 是否有任何约定如何写一个变量应该在其名称中的类的提醒?("匈牙利符号"或者其他......我的意思是,我有一种印象,如果你觉得有必要在Ruby代码中使用它,那你就是做错了,但无论如何,是否有约定?)

等等...

ruby naming-conventions

39
推荐指数
2
解决办法
6万
查看次数

启动rails服务器时出错:警告:PATH中的不安全世界可写dir/usr,模式040777

我正在关注Treehouse上的Ruby教程,并在启动rails服务器时遇到以下错误:

/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
Run Code Online (Sandbox Code Playgroud)

我尝试用sudo chmod ow/usr/local/fix和其他变种修复它,但遗憾的是,这对我没有任何作用.

即使有这个错误,虽然服务器仍然会启动,一切都会工作正常,但现在我也得到了很多其他错误,服务器甚至不会启动,我认为他们可能会以某种方式连接?

这是我现在得到的错误:

 Yass-Bents-MacBook-Pro:treebook yassine$ rails s
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
/usr/local/rvm/gems/ruby-1.9.3-p392@global/gems/bundler-1.2.4/lib/bundler/runtime.rb:197: warning: Insecure world writable dir /usr in PATH, mode 040777
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/local/rvm/gems/ruby-1.9.3-p392/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:469:in `load': …
Run Code Online (Sandbox Code Playgroud)

ruby terminal ruby-on-rails

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

Ruby on Rails - 无法将"\ x89"从ASCII-8BIT转换为UTF-8,用于xxx/xxxx/xxxx

我在我的linux系统上在rails 4.0.0上安装ruby,但是我得到这种错误无法将"\ x89"从ASCII-8BIT转换为UTF8 for guides/assets/images/getting_started/routing_error_no_route_matches.png,跳过和许多类似的错误,我在这里读到它不会产生任何影响,但我不明白为什么它会来.有什么指针吗?

ruby linux installation rubygems ruby-on-rails

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

Ruby输出Unicode字符

我不是一个Ruby dev的交易,但我使用Capistrano进行PHP部署.我正在尝试清理脚本的输出,并尝试添加一个unicode复选标记,本博客中所述.

问题是如果我这样做:

checkmark = "\u2713"
puts checkmark
Run Code Online (Sandbox Code Playgroud)

它输出"\ u2713"而不是✓

我已经google了,我找不到任何讨论这个的地方.

TLDR:我如何putsprintunicode勾选U-2713?

编辑


我在我的Mac(OSX Lion)上运行Ruby 1.8.7,因此无法使用该encode方法.我的shell是iTerm2中的Bash.

ruby string unicode utf-8 ruby-1.8.7

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

Rake db:重置'用户没有CONNECT权限'

所以我在我的Rails应用程序中使用Heroku Postgres,但我不是在Heroku本身上托管我的应用程序.我在我的database.yml中使用了Heroku的Active Record连接详细信息,它看起来像这样:

development:
adapter: postgresql
encoding: unicode
pool: 5
database: [database]
username: [username]
password: [password]
host: ec2-54-227-243-78.compute-1.amazonaws.com
port: 5432
Run Code Online (Sandbox Code Playgroud)

但是,现在我正在尝试使用db:迁移我的应用程序,以便数据库全部使用我的模型进行设置.运行该命令不会做任何事情,所以我尝试了rake db:reset,我得到了这个:

Couldn't drop df2cokjfj0k4vu : #<PG::Error: FATAL:  permission denied for database "postgres"                                                                  
DETAIL:  User does not have CONNECT privilege.                                                                                                                 
Run Code Online (Sandbox Code Playgroud)

df2cokjfj0k4vu已经存在
- initialize_schema_migrations_table()
- > 1.3997s
- assume_migrated_upto_version(20130924040351,["/ home/action/braindb/db/migrate"])
- > 0.0882s

知道我做错了什么.我还是Rails的新手,所以有时我会忘记在迁移主机时如何正确设置Postgres数据库.

ruby postgresql ruby-on-rails heroku

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