小编Lui*_*igi的帖子

创建目录(如果Ruby不存在)

我正在尝试使用以下代码创建一个目录:

Dir.mkdir("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")
    unless File.exists?("/Users/Luigi/Desktop/Survey_Final/Archived/Survey/test")  
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

没有这样的文件或目录 - /用户/路易吉/桌面/ Survey_Final /归档/调查/测试(错误:: ENOENT)

为什么Dir.mkdir上面的语句没有创建此目录?

ruby

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

Postgres将Heroku Production DB复制到本地开发DB

我有一个heroku数据库d76mj7ltuqs.

然后我有一个本地数据库test_development.

这两个数据库的模式是相同的 - 我想从生产数据库中提取所有数据并覆盖我的本地数据库,因此本地是拉动时生产的精确复制品.

我怎么能在Postgres做到这一点?

database postgresql heroku

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

删除并重新部署Rails应用程序到heroku

我有一个部署到Heroku的rails应用程序.我最近进行了大量的更改,删除了旧的迁移,重新创建了新的迁移,重新定位并处理了合并冲突....列表继续.

现在,我想从heroku中擦除我的整个heroku"production"应用程序,并将我的代码从我的github master分支重新部署到Heroku.

是否有一种简单或"正确"的方法来删除我在Heroku上的应用程序,将其擦除干净,然后重新部署?

git ruby-on-rails heroku

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

Rails首先或初始化一个值,但如果创建则添加更多值

以下面的例子为例:

GroupMember.where(:member_id => 4).first_or_initialize

如果我想说这样的话怎么办?

如果存在member_id为4的GroupMember,则"找到它".否则,创建一个GroupMember,其member_id为4,group_id为7.

所以我希望上面的语句只检查member_id - 但如果它不存在,我希望它创建一个具有多个属性的GroupMember.我该怎么写呢?我正在使用rails 4.0.

ruby-on-rails ruby-on-rails-4

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

Ruby使用.reject从数组中删除nil值

我有一个数组:

scores = [1, 2, 3, "", 4]
Run Code Online (Sandbox Code Playgroud)

我想删除所有空白值.但当我运行这个:

puts scores.reject(&:empty?)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

undefined method `empty' for 1:Fixnum
Run Code Online (Sandbox Code Playgroud)

如何在一步过程中从数组中删除非整数的值?我使用的是Ruby 1.9.3.

ruby arrays

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

Ruby错误Net :: ReadTimeout

我正在使用httparty进行一系列API调用.前两个API调用成功,但第三个失败.它暂停约60秒(默认超时时间),然后返回此错误:

/Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill': Net::ReadTimeout (Net::ReadTimeout)
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http/response.rb:39:in `read_status_line'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http/response.rb:28:in `read_new'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1406:in `block in transport_request'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1403:in `catch'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1403:in `transport_request'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1376:in `request'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1369:in `block in request'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:852:in `start'
    from /Users/luigi/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:1367:in `request'
    from /Users/luigi/.rvm/gems/ruby-2.0.0-p247@pdf/gems/httparty-0.12.0/lib/httparty/request.rb:93:in `perform'
    from /Users/luigi/.rvm/gems/ruby-2.0.0-p247@pdf/gems/httparty-0.12.0/lib/httparty.rb:486:in `perform_request'
    from /Users/luigi/.rvm/gems/ruby-2.0.0-p247@pdf/gems/httparty-0.12.0/lib/httparty.rb:423:in `get'
    from /Users/jmccann/.rvm/gems/ruby-2.0.0-p247@pdf/gems/httparty-0.12.0/lib/httparty.rb:518:in `get'
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么会发生这种情况?这个错误是指示API的错误,还是我可以做些什么来引起它?

我的代码:

这是有效的通话:

url = HTTParty.get("https://dev.test.com#{call}",
    :basic_auth => auth,
    :headers => {'Accept' => 'application/json' } )
Run Code Online (Sandbox Code Playgroud)

这是不起作用的电话:

url = HTTParty.get("https://dev.test.com#{call}",
    :basic_auth …
Run Code Online (Sandbox Code Playgroud)

ruby api timeout httparty

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

redis试图连接到Heroku的本地主机 - 为什么?

我一直在使用sidekiq/redis很长一段时间没有问题.

出于某种原因,今天我收到此错误:

Redis::CannotConnectError - Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED):

因此,Redis正在尝试连接到我的localhost连接而不是heroku中的redis_to_go url.

我的redis.rb文件如下所示:

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379/")
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Run Code Online (Sandbox Code Playgroud)

当我输入时,heroku config我得到了这个:

REDISTOGO_URL: redis://redistogo:b9f872ce1dd16cd989@albacore.redistogo.com:10280/
Run Code Online (Sandbox Code Playgroud)

它完全映射到我在Heroku的Redis To Go插件中看到的我的URL.

我知道在昨天它工作的时候和今天它没有改变的Redis没有任何改变,但我确实使用Mongo HQ启动了一个Mongo数据库.也许某处有冲突?

任何帮助表示赞赏.

编辑

我没有mongo init文件,我创建的唯一mongo特定文件是我的config/mongoid.yml文件.它看起来像这样:

development:
   sessions:
     default:
       database: mongoid_dev
       hosts:
        - localhost:27017
   options: #strictly 2 spaces before
     raise_not_found_error: false #strictly 4 spaces before not 6

 production:
   sessions:
     default:
       uri: <%= ENV['MONGOHQ_URL'] %>
   options: #strictly 2 spaces before …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku mongodb redis sidekiq

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

将Array转换为Hash,同时在Ruby中保留Array索引值

我有一个数组,其中包含X多个值.以下数组只有4个,但我需要代码是动态的,而不是只依赖于四个数组对象.

array = ["Adult", "Family", "Single", "Child"]

我想转换array为这样的哈希:

hash = {0 => 'Adult', 1 => 'Family', 2 => 'Single', 3 => 'Child'}

散列应该具有与数组具有对象一样多的键/值对,并且值应该从0开始并且对于每个对象递增1.

ruby arrays hash

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

使用带有Rails的Webhooks

我不熟悉Webhooks,但我觉得它们对我的应用程序来说是正确的.

我有FluidSurveys webhook的以下文档

我理解如何通过POST对他们的请求制作webhook API,但我不知道如何判断webhook实际发送响应的位置.我可以通过我想要的任何订阅网址吗?例如https://www.myapp.com/test,那是webhook发送数据的地方?此外,webhook创建后,我不知道如何确保我的Rails应用程序将收到启动的响应.我假设一个控制器方法与我提供给webhook的url相对应.

如果我在处理webhook的控制器上是正确的,那会是什么样子?

任何指导表示赞赏.

ruby-on-rails webhooks

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

仅返回列中的数值 - Postgresql

namecontacts表格中的列中有几个与此类似的值:

test 3100509 DEMO NPS

我想只返回每个值的数字部分name.

我试过这个:

select substring(name FROM '^[0-9]+|.*') from contacts

但那不行.

有关如何从返回值中删除所有非数字字符的想法?

sql postgresql pattern-matching

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