尽管在这里和其他地方有几个类似的问题,但我一直无法找到解决这个问题的可行办法.Rails 3似乎没有回答这个问题,所以这里有:
我有一个应用程序,当前允许用户创建自己的子域,其中包含他们的应用程序实例.在Rails 2中,你最好使用subdomain-fu gem,在版本3中它显然更简单,根据Railscast - http://railscasts.com/episodes/221-subdomains-in-rails-3.
这是好事,但我也希望为用户提供将自己的域名与其帐户相关联的选项.因此,虽然他们可能有http://userx.mydomain.com,但我希望他们选择将http://userx.com关联起来.
我在Rails 2中找到了一些参考,但这些技术似乎不再起作用了(特别是这一个:http://feefighters.com/devblog/2009/01/21/hosting-multiple-domains-from -a-single-rails-app /).
任何人都可以推荐一种方法来使用路由接受任意域并将其传递给控制器,以便我可以显示相应的内容?
更新:我现在得到了大部分答案,感谢Leonid的及时回复,以及对代码的全新审视.它最终需要添加我正在使用的现有子域代码(来自Railscast解决方案),然后向routes.rb添加一些内容.我还没到那里,但我想发布到目前为止我所拥有的内容.
在lib/subdomain.rb中:
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != "www"
end
end
class Domain
def self.matches?(request)
request.domain.present? && request.domain != "mydomain.com"
end
end
Run Code Online (Sandbox Code Playgroud)
我已经添加了第二类模仿第一类,这是已知的工作.我只是添加一个条件,确保传入的域不是我主持主站点的域.
此类用于routes.rb:
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
constraints(Subdomain) do
match '/' => 'blogs#show'
end
Run Code Online (Sandbox Code Playgroud)
在这里,我在前面添加现有的子域代码(再次,它工作正常)和一个节来检查域.如果此服务器响应该域并且它不是主站点运行的域,则转发到指定的控制器.
虽然这似乎有效,但我还没有完成整个工作,但我认为这个问题已经解决了.
我的应用程序有一个多窗格教程样式视图,用户可以通过该视图了解该应用程序.这非常实现,如本教程中所述.在为iOS 7和8实现它之后,我正在比较它们的工作方式,并找到后者的问题 - 我在这里运行Xcode 6 GM.
似乎UIPageViewController在转换完成后呈现视图.我重写了委托方法,看看发生了什么:
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray *)pendingViewControllers
{
NSLog(@"Frame size before: %@", NSStringFromCGRect([(UIViewController*)pendingViewControllers[0] view].frame));
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
NSLog(@"Frame size after: %@", NSStringFromCGRect([(UIViewController*)previousViewControllers[0] view].frame));
}
Run Code Online (Sandbox Code Playgroud)
这是一个示例输出:
Frame size before: {{0, 0}, {600, 600}}
Frame size after: {{0, 0}, {320, 568}}
Run Code Online (Sandbox Code Playgroud)
这样表现如下:向左滑动以拉入下一个视图,并在新视图的底部注意32磅的空白区域.转换完成后,它会进入正确的布局.
这可能是iOS 8中的错误吗?在这一点上,我完全没猜到.
我正在研究CouchDB支持的应用程序.基本上,我想为我的应用程序的每个用户创建一个数据库.为此,admin用户将创建数据库,但是在此之前,用户需要访问他们的数据库(使用SSL Auth over SSL).我一直都在想着解决这个问题.
我发现的最好的资源是CouchDB wiki,在这个链接:
http://wiki.apache.org/couchdb/Security_Features_Overview#Authorization
它建议您可以通过创建名为"_security"的文档来设置每个数据库的授权,您可以在其中添加管理员和读者的哈希值.当我尝试创建该文档时,我收到的消息是"Bad special document member:_security".
$ curl -X GET http://localhost:5984
{"couchdb":"Welcome","version":"1.0.1"}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
干杯,
亚伦.
我正在尝试为移动Safari配置视口.使用视口元标记,我试图确保没有缩放,并且您不能水平滚动视图.这是我正在使用的元标记:
<meta id="viewport" name="viewport" content ="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
Run Code Online (Sandbox Code Playgroud)
在我加载页面的iPhone上,看起来似乎没问题:
但我可以横向滚动,所以它看起来像这样(这是我可以去的最右边:
当我将其摆放到横向视图中时,页面会按预期呈现,锁定水平滚动位置.
我正在试图弄清楚如何使这个页面根本不能水平滚动.是否有可能我有一些页面元素推出内容?我甚至不希望有一个正确的视口集可能,但我在这里抓住吸管.
我正在构建一个iOS应用程序,其中包含一个不续订的IAP.Apple在他们的IAP概述中提供了这个金块:
您需要向用户拥有的所有设备提供非续订订阅.不续订订阅不会自动同步到Store Kit的所有设备; 你必须自己实现这个基础设施.例如,大多数订阅由外部服务器提供; 您的服务器需要实施一种机制来识别用户并将订购购买与购买它们的用户相关联.
我想遵循这条规则:我希望我的用户能够利用他们在其他设备上的一台设备上购买的订阅.那么如何在iPhone和iPad上识别同一个用户呢?我知道您不能使用Apple ID,也不能依赖注册方法.
我刚才发现了这个问题 ; 那里给出的答案似乎不可行.其他人必须有更优雅的东西.
我和这个家伙有同样的问题,这个家伙和这个家伙(nota bene,我实际上不确定他们是不是所有人,本身).
他们最终找到了自己的解决方案,但没有一个适用于我的问题.我在iOS 8应用程序中使用Xcode 6.1,附带扩展名.应用程序和扩展程序都依赖于包含的框架.当我尝试将应用程序提交到商店时,我得到的验证警告是"ERROR ITMS-9000: Invalid bundle. The bundle at 'xxxxx.appex' contains disallowed file 'Frameworks'".
我甚至找不到一个名为Frameworks的文件.共享框架应该保存在/ Library/Frameworks,这是Apple推荐的保存位置.该项目还使用Cocoapods,这使我成为唯一的其他可能的罪魁祸首,因为它在其配置文件中引用$ FRAMEWORK_PATH(尽管build文件夹不包含具有该名称的文件或文件夹).
我知道before_filter只适用于Rails中的控制器,但是对于模型我想要这样的东西:每次调用模型中的方法时,我都想运行一个方法来确定被调用的方法是否应该运行.从概念上讲,这样的事情:
class Website < ActiveRecord::Base
before_filter :confirm_company
def confirm_company
if self.parent.thing == false?
return false
end
end
def method1
#do stuff
end
end
Run Code Online (Sandbox Code Playgroud)
因此,当我调用@ website.method1时,它将首先调用confirm_company,如果我返回false,则不会运行method1.Rails有这样的功能吗?我希望我只是错过了这里显而易见的事情......
我的应用程序要求用户在浏览器的不同标签中登录不同的帐户(我们专门针对Chrome).由于Rails使用cookie来存储会话信息,因此当用户登录时,他们将登录浏览器中的所有选项卡.我正在使用ActiveRecord会话存储方法,但即使会话的ID也保存为cookie.
似乎有一个使用HTML5的sessionStorage机制的解决方案,该机制的范围仅限于用户登录的选项卡或窗口.我似乎只需要将会话信息保存到sessionStorage而不是cookie中.但我根本找不到任何相关信息.
假设无法在Rails中配置会话存储来执行此操作,是否可以覆盖ActiveRecord会话保存机制?有关如何查找有关如何进行此操作的信息的指示?
我正在建立一个网站来显示从iPhone录制的视频.该视频以纵向方向显示,为288x352.Safari可以很好地显示此视频,但在Chrome中,视频会转换为横向模式,352x288.我的头是侧身.:-(
这是有问题的页面:http: //aaron.tiberiuslog.com/B4F4CC56-172E-4D84-9656-BE04E6E475A0
如果有帮助的话,这就是视频本身.
我已经尝试过使用vanilla HTML5标记,现在已经添加了VideoJS,尽管这个问题没有任何区别.
更新:我现在对我的问题有半个答案.看来设备上需要设置一些编码选项,以确保所有观众都能正确定位,包括VLC和Chrome(例如).这个问题没有得到答案,所以我创建了一个新问题.希望我们能为这个问题拼凑出合适的解决方案!
更新2:我发现了答案!我发布的另一个问题让我了解了在iOS上正确编码视频的技术.
我一直在开发包含Share Extension的iOS 8应用程序.应用和扩展目标都使用新的iOS 8风格动态框架.为了让这个该死的东西进入TestFlight Beta App Review(见这里和这里),我对我的构建配置进行了一些更改.该商店最终接受了该应用程序的审查,但今天,当我试图在我的设备上运行时,我收到以下错误:
dyld: Library not loaded:
/Users/aaron/Library/Developer/Xcode/DerivedData/VideoGrabber-gpyzpfvbijsnuyglzzvynckkuwee/Build/Products/Debug-iphoneos/MyAppKitiOS.framework/MyAppKitiOS
Referenced from: /private/var/mobile/Containers/Bundle/Application/4C6CFF22-0595-4222-A515-D0D5A1696DBF/MyApp.app/MyApp
Reason: image not found
在其他地方寻求帮助,我遇到了许多建议的解决方案:
将框架添加到"常规"选项卡的"应用程序目标"的"嵌入式二进制文件"部分.完成.
在App Target上的Build Settings的Runpath Search Paths部分输入"@ executable_path/Frameworks".完成.
确保"复制文件"构建阶段中有一个条目.第一步实际上是为你做的,所以...完成.
ios ×3
activerecord ×2
html5 ×2
xcode ×2
autolayout ×1
callback ×1
couchdb ×1
html5-video ×1
ios8 ×1
mobile ×1
objective-c ×1
routes ×1
routing ×1
security ×1
session ×1
storekit ×1
subdomain ×1
validation ×1
viewport ×1
xcode6 ×1