有哪些最佳实践可以让您对不同环境的所有不同设置保持理智并为它们生成不同的构建?例如,我们的应用程序连接到 auth0 进行登录,我们有两个不同的环境:后端服务的阶段 + 生产环境。因此,我们为 auth0 创建了两个单独的应用程序(一个用于阶段,另一个用于生产)。在 iOS 上管理此设置的最佳做法是什么?您是否使用各种设置为 stage + prod 创建单独的 plist 文件?
我们生成了两种不同的应用程序构建:一种用于阶段(用于测试版),另一种是用于发布到应用商店的产品构建。
最佳答案
在 Swift3 中,我开始使用枚举来描述不同目标的不同行为。
第 1 步 - 在目标的 plist 中,我指定目标类型,Alpha、Beta 或 Production。
第 2 步 - 我声明一个枚举来描述所有可能的构建类型
enum RedactedAppVersion {
case Alpha
case Beta
case Production
}
第 3 步 - 我实现了一个惰性全局属性来读取 plist。
lazy var appVersion: RedactedAppVersion = {
if let temp = Bundle.main.object(forInfoDictionaryKey: "RedactedAppVersion") as? String {
if temp.lowercased() == "alpha" {
return RedactedAppVersion.Alpha
}
if temp.lowercased() == "beta" {
return RedactedAppVersion.Beta
}
}
return RedactedAppVersion.Production
}()
第 4 步 - 当我需要说获取 api 的路径时,我询问枚举...
4a - 将以下内容添加到枚举中
func apiPath() -> String {
switch self {
case .Alpha: return "https://test.redacted.com/v1/"
case .Beta: return "https://test.redacted.com/v1/"
case .Production: return "https://api.redacted.com/v1/"
}
}
4b - 我得到了这样的正确路径 -
let path = ApplicationManagerSingleton.sharedInstance.appVersion.apiPath() + "auth/sign-up"
关于ios - 在 iOS 中针对不同构建发行版管理 plist 的 url、设置、 key 的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901155/
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.
在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b