这个问题涉及将iPhone模拟器与单元测试结合使用.我编写了一系列测试来测试存储我们的数据,合并或不合并我们可以从用户的联系人访问的数据,具体取决于联系人是否存在.我想要一种设置权限的方法,以便我可以测试(A)当用户授予访问联系人的权限时,以及(B)当用户拒绝访问联系人时.我想要的是一种方法,仅在单元测试中,对权限值进行硬编码.我不想提示它,因为这会阻止单元测试运行时额外的困难,即权限永远设置为该值.
所以我通过控制单元测试中的权限来联系SO社区,看看还有谁可能正在测试他们的代码与地址簿联系人的交互.有没有人有一个配方,允许我测试用户的双方给予和拒绝访问地址簿联系人?
我正在使用XCTestCase父类.如果这有助于解决这个问题,我愿意使用别的东西.
我已经阅读了该领域所有相关的SO问题和答案.他们专注于帮助人们编写权限请求例程并访问其应用程序中的地址簿联系人.我知道该怎么做.我特别谈到如何在单元测试中伪造通讯录权限.
我有一个模型,Domain它有一个文本字段,names.
> rails g model Domain names:text
invoke active_record
create db/migrate/20111117233221_create_domains.rb
create app/models/domain.rb
> rake db:migrate
== CreateDomains: migrating ==================================================
-- create_table(:domains)
-> 0.0015s
== CreateDomains: migrated (0.0066s) =========================================
Run Code Online (Sandbox Code Playgroud)
我将此字段序列化为模型中的数组.
# app/models/domain.rb
class Domain < ActiveRecord::Base
serialize :names, Array
end
Run Code Online (Sandbox Code Playgroud)
为此模型创建ActiveAdmin资源
> rails g active_admin:resource Domain
create app/admin/domains.rb
Run Code Online (Sandbox Code Playgroud)
然后,在app/admin/domains.rb中,我设置各种块来处理序列化字段
# app/admin/domains.rb
ActiveAdmin.register Domain do
index do
id_column
column :names do |domain|
"#{domain.names.join( ", " ) unless domain.names.nil?}"
end
default_actions
end
show do |domain|
attributes_table …Run Code Online (Sandbox Code Playgroud) 我有安卓代码,它使用后台进程定期(例如每小时)连接到Web上的内容源以检查更新的内容.当新用户第一次下载应用程序并运行它时,似乎(这只是一个"目前似乎")在这种首次运行的情况下,因为我们服务器的DNS尚未在设备上缓存,那些第一系列连接因可怕的UnknownHostException而失败:Host未解析.当然,应用程序稍后再次尝试(再次,"看起来像")它一切正常 - 可能是因为操作系统有时间实际解决地址.
所以,我的问题是:(1)其他Android开发人员是否也看到了他们部署的应用程序的这种行为?第一次,一系列"主持人未解决"的问题在以后发挥作用.(2)有没有人有更好的策略来"加热DNS"这么说,以便第一个真正的连接起作用?或者,当您遇到此异常时,您是否只是重新尝试使用一些后退循环?我正在考虑有一个单独的线程试图从我们的服务器获取一个小文本文件,让它只是循环,直到它得到它,并可能(不确定这部分)阻止其他传出网络连接,直到它成功.
无论如何,我已经在Stack Overflow上阅读了各种类似措辞问题的答案,我只是向大家保证
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中设置:)
我没有太多运气通过谷歌找到信息,也许这里有人有类似的问题.
我们有一个使用Postgres DB在Heroku上运行的rails应用程序.我们有一个特别慢的查询(是的,我们正在努力修复查询),但在调试这个问题的过程中,我发现我们的机架超时gem并没有在15秒内终止请求.我通过插入睡眠(50)进行了侧面测试,果然,在这种情况下,机架超时工作正常.
这是我们日志的编辑副本,显示机架时间(时间到了!)在几分钟后发生,我们仍然在30秒后看到H12请求超时.
2011-12-14T21:15:16+00:00 app[web.2]: Started GET "/search?utf8=%E2%9C%93&terms=foo" for 173.164.186.205 at Wed Dec 14 13:15:16 -0800 2011
2011-12-14T21:15:16+00:00 app[web.2]: search query elapsed time => [0.000365018844604492]
2011-12-14T21:15:46+00:00 heroku[router]: Error H12 (Request timeout) -> GET /search dyno=web.2 queue= wait= service=30000ms status=503 bytes=0
2011-12-14T21:18:47+00:00 app[postgres]: [6-1] [removed] [COBALT] LOG: duration: 211241.725 ms statement: SELECT [truncated]
2011-12-14T21:18:47+00:00 app[web.2]:
2011-12-14T21:18:47+00:00 app[web.2]: ActionView::Template::Error (Timeout::Error: time's up!: SELECT [truncated]):
Run Code Online (Sandbox Code Playgroud)
有关实施机架超时的原因和方法的任何见解?
我有一个简单的Rails应用程序,我试图使用Netflix API来访问我的一些订阅者信息,例如我的历史记录和队列.我的问题是,无论我做什么,Netflix都不会使用我的oauth_callback网址,而是在用我的用户凭据授权应用程序之后将我转发到Netflix网站.
以下是向Netflix API发出请求的控制器代码
class ExportController < ApplicationController
def export
consumer = OAuth::Consumer.new( ENV['NETFLIX_KEY'],ENV['NETFLIX_SECRET'],
:site => "http://api.netflix.com",
:request_token_url => "http://api.netflix.com/oauth/request_token",
:access_token_url => "http://api.netflix.com/oauth/access_token",
:authorize_url => "https://api-user.netflix.com/oauth/login" )
request_token = consumer.get_request_token
session[:request_token]=request_token
session[:request_token_secret]=request_token.secret
url = request_token.authorize_url( :oauth_callback => "http://#{ENV['OAUTH_CALLBACK_DOMAIN']}/export_callback/", :oauth_consumer_key => ENV['NETFLIX_KEY'],
:application_name => ENV['APPLICATION_NAME'] )
redirect_to url
end
def export_callback
@request_token=OAuth::RequestToken.new(session[:request_token],session[:request_token_secret])
@access_token = @request_token.get_access_token(:oauth_verifier => params[:oauth_verifier])
end
end
Run Code Online (Sandbox Code Playgroud)
控制器正确重定向到https://api-user.netflix.com/oauth/login站点,并正确设置所有参数.我获得了Netflix登录/授权应用页面.

但是,如果我查看此页面的来源,我会在表单中看到该oauth_callback字段设置为oob
<input type="hidden" name="oauth_callback" value="oob"/>
Run Code Online (Sandbox Code Playgroud)
我已经检查了几种不同的方法,我设置的oauth_callback参数与Netflix Authentication Walkthrough相同.实际上,当我通过演练并在其字段中放入我的回调url时,它确实会重定向回我的rails应用程序.
所以,我的问题,有谁知道如何让Netflix尊重我的oauth_callback …
我正在使用 Araxis 提供的苹果脚本,以便我可以使用 Merge 来处理我的“git diff HEAD”命令。
但是,自从升级到 Mountain Lion 后,每次运行命令时,都会收到警告:
CFURLGetFSRef was passed this URL which has no scheme
(the URL may not work with other CFURL routines): .
Run Code Online (Sandbox Code Playgroud)
在脚本中,似乎导致问题的原因是
set _file2 to (POSIX path of (POSIX file "." as alias)) & _file2
Run Code Online (Sandbox Code Playgroud)
当我对路径进行硬编码而不是使用时".",警告就会消失。我试过 pre-pending file:///,但POSIX path of正在考虑将其中一个斜杠作为转义字符,因此路径变为file:/Users/...然后由于具有未知模式而产生错误(因为第二个斜杠已被删除)。所以,我的问题是,获取POSIX file当前位置的正确方法是什么(现在,在 Mountain Lion 中)?
添加完整脚本
#!/usr/bin/osascript
# This script is required to reorder the parameters sent by Git, so that they may …Run Code Online (Sandbox Code Playgroud) 我们正在使用Mustache模板,我想在我们的RoR Web应用程序中创建一个预览View,它将模板和我们存储在数据库中的一些数据结合起来,但它不能像我预期的那样工作,并且在对互联网进行一些搜索之后(包括所以!),我没有找到包含活动模型的任何示例.
如何将ActiveModel记录传递给Mustache以与模板合并?
设置:
架构
create_table "templates", :force => true do |t|
t.string "kind"
t.text "data"
t.integer "data_count"
end
create_table "bars", :force => true do |t|
t.string "guid"
t.string "name"
t.string "summary"
end
Run Code Online (Sandbox Code Playgroud)
这些模型没有什么特别之处.两者都是ActiveRecord :: Base的子类
class Bars < ActiveRecord::Base
end
class Templates < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
控制器
class TemplateController < ApplicationController
def preview
@result = Mustache.render( template.data, :bars => Bar.limit(template.data_count ) ).html_safe
end
end
Run Code Online (Sandbox Code Playgroud)
风景
<%= @result %>
Run Code Online (Sandbox Code Playgroud)
路线
get 'templates/:id/preview' => 'templates#preview', :as => 'templates_preview'
Run Code Online (Sandbox Code Playgroud)
数据
y …Run Code Online (Sandbox Code Playgroud) 使用active_admin,我看到加载具有许多记录的模型的索引的速度很慢.我不确定这与其他报道的缓慢病例有关.
2011-11-10 13:26:14 rails[35848] INFO: Started GET "/admin/articles" for 127.0.0.1 at Thu Nov 10 13:26:14 -0800 2011 2011-11-10 13:26:14 rails[35848] INFO: Processing by Admin::ArticlesController#index as HTML 2011-11-10 13:26:14 rails[35848] DEBUG: AdminUser Load (0.3ms) SELECT "admin_users".* FROM "admin_users" WHERE "admin_users"."id" = 1 LIMIT 1 2011-11-10 13:26:14 rails[35848] DEBUG: Article Load (381.2ms) SELECT "articles".* FROM "articles" ORDER BY publish_date desc, guid desc, "articles".id desc LIMIT 30 OFFSET 0 2011-11-10 13:26:14 rails[35848] DEBUG: SQL (0.5ms) SELECT COUNT(*) FROM "articles" 2011-11-10 13:26:14 rails[35848] DEBUG: …
ruby ×3
activeadmin ×2
activemodel ×1
addressbook ×1
android ×1
applescript ×1
araxis ×1
git ×1
heroku ×1
ios ×1
java ×1
merge ×1
mustache ×1
netflix ×1
oauth ×1
postgresql ×1
rack ×1
templates ×1
unit-testing ×1