小编ari*_*kfr的帖子

使用bundler时如何在Gemfile中使用gem?

当一般使用带有项目的bundle和Rails时,你只能访问Gemfile中定义的gem.虽然这是有道理的,但它可能是有限的.当我想使用团队的其他成员不使用的某个RSpec格式化程序时,我发现它主要限制了它.除非它在Gemfile中,否则无法访问.

任何方式或我必须将其添加到Gemfile?

更新:我的问题不是Bundler而是Spork.在没有Spork的情况下运行RSpec时我没有使用任何格式化程序的问题.

更新#2:看起来使用Bundler仍然是导致问题的原因.使用Spork和不使用Spork之间的区别在于,在没有Spork的情况下运行RSpec时,它会在加载项目并进入Bundler"sandbox"之前加载格式化程序.

使用Bundler:

$ bundle exec irb
>> require 'fivemat'
LoadError: cannot load such file -- fivemat

from (irb):1:in `require'
from (irb):1
from /Users/arikfr/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
Run Code Online (Sandbox Code Playgroud)

没有Bundler:

$ irb
>> require 'fivemat'
=> true
Run Code Online (Sandbox Code Playgroud)

ruby rubygems bundler

21
推荐指数
2
解决办法
5629
查看次数

如何规范依赖Memcached的操作?

我们有一个Rails应用程序,我们用RSpec测试.我们想要规范依赖于Memcached的操作.这样做的最佳做法是什么?

我想通过将所有调用存根来实现这一点Rails.cache.这是一个好主意吗?

根据@Pan Thomakos的建议,我正在添加一些关于我正在尝试测试的场景的其他详细信息:

我们在系统中有帐户的概念,因此在每次请求时我们都会检索当前用户和当前帐户.因为系统中的帐户不多,所以我们将它们全部保存在缓存中并从那里检索它们.

def self.find_by_slug(slug)  
  Rails.cache.fetch(Account.cache_key_for_slug(slug), :expires_in => 1.day) { super }  
end
Run Code Online (Sandbox Code Playgroud)

出于这个原因,在这种情况下缓存不仅是一个很好的行为,而是预期的行为和我想要测试的东西.因此,关闭缓存是行不通的.

memcached rspec ruby-on-rails rspec-rails

7
推荐指数
1
解决办法
2597
查看次数

为什么Rails在启动时预先加载所有依赖项(gems)?

当Rails启动时,它会预加载所有依赖项(gems),这会导致启动时间非常慢.在我正在进行的中型项目中,Rails的开始时间为10-15秒取决于机器.

虽然这不是生产中的问题,但这是一个巨大的发展痛苦.特别是在工作TDD/BDD时.有加速测试的解决方案(如spork),但它们引入了自己的问题.

我的问题是:为什么不在每个代码文件中需要所需的依赖项,而不是在启动时预加载所有内容?

手动要求的缺点是什么?额外的代码行?

ruby performance gem ruby-on-rails bundler

6
推荐指数
1
解决办法
338
查看次数

使用SQLAlchemy / Alembic时如何检查是否有挂起的迁移?

我们正在使用SQLAlchemy和Alembic(以及Flask-SQLAlchemy和Flask-Migrate)。如何检查是否有待处理的迁移?

我尝试查看Alembic和Flask-Migrate的文档,但找不到答案。

python sqlalchemy flask-sqlalchemy alembic flask-migrate

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

限制自定义Firebase Analytics事件的自定义参数?

我没有在文档中找到此内容-自定义事件可能具有的自定义参数数量是否有限制?

文档确实提到了25个用户自定义参数的限制,但是事件自定义参数又如何-是否有类似的限制?

firebase firebase-analytics

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

Django:反向函数失败,异常

我正在关注Django教程并在本教程的第4部分遇到错误.我到了我正在编写投票视图的部分,它使用反向重定向到另一个视图.出于某种原因,反向失败,出现以下异常:

import()参数1必须是string,而不是instancemethod

目前我的项目的urls.py看起来像这样:

from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^polls/', include('mysite.polls.urls')),
(r'^admin/(.*)', include(admin.site.root)),
)
Run Code Online (Sandbox Code Playgroud)

和app urls.py是:

from django.conf.urls.defaults import *

urlpatterns = patterns('mysite.polls.views',
     (r'^$', 'index'),
     (r'^(?P<poll_id>\d+)/$', 'details'),
     (r'^(?P<poll_id>\d+)/results/$', 'results'),
     (r'^(?P<poll_id>\d+)/vote/$', 'vote'),
)
Run Code Online (Sandbox Code Playgroud)

投票视图是:(我已将其简化为仅包含错误的行)

def vote(request, poll_id):
    return HttpResponseRedirect(reverse('mysite.polls.views.results', args=(1,)))
Run Code Online (Sandbox Code Playgroud)

当我从项目的urls.py中删除admin urls include时,即将其变为:

urlpatterns = patterns('',
    (r'^polls/', include('mysite.polls.urls')),
#(r'^admin/(.*)', include(admin.site.root)),
)
Run Code Online (Sandbox Code Playgroud)

有用.

我尝试了很多东西,无法理解我做错了什么.

python django reverse admin

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

Ruby 1.9.3和Ruby 1.8.7之间的日期字符串解析的差异

使用Ruby 1.8.7:

>> require 'time'
>> Time.parse '01/28/2012'
=> Sat Jan 28 00:00:00 +0200 2012
>> Time.parse '28/01/2012'
=> ArgumentError: argument out of range
Run Code Online (Sandbox Code Playgroud)

使用Ruby 1.9.3:

>> require 'time'
>> Time.parse '28/01/2012'
=> 2012-01-28 00:00:00 +0200
>> Time.parse '01/28/2012'
=> ArgumentError: argument out of range
Run Code Online (Sandbox Code Playgroud)

看起来在Ruby 1.8.7中它接受美国格式(月/日/年),而在Ruby 1.9.3中它只接受非美国格式(日/月/年).

有没有办法将此行为更改为Ruby 1.8.7?

ruby time date

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