问题标签 [sinatra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 是否有 JRuby-Rack Sinatra Warbler Project 原型?
是否有一个 jruby + rack + Sinatra 项目的项目原型(或任何 ruby 社区所称的),它创建一个 WAR 部署文件,所有必需的依赖项都准备就绪?
我想要的是相当于“rails appname”,它创建一个准备就绪的项目,其中包含 ant/rake 脚本和一个基本的目录层次结构都准备好了。
这样的野兽存在吗?
ruby - 尝试锻炼如何在 Ebb 网络服务器上运行 Ruby (Sinatra) 应用程序
我需要编写一个超快速的 Ruby 应用程序来处理 Sinatra 上的 Web 请求 - 并希望在Ebb 网络服务器上运行它。但我无法弄清楚如何做到这一点。有人可以帮我吗?
ruby - 将 HTML 表单发布到 remote.cgi - 用 Ruby 编写?
我正在开发一个托管在 Microsoft 的 Office Live 服务上的网站。它有一个联系表格,使访客能够与所有者取得联系。我想编写一个 Ruby 脚本,它位于一个单独的服务器上,表单将发布到该脚本。它将解析表单数据并将详细信息通过电子邮件发送到预设地址。然后该脚本应将浏览器重定向到确认页面。
我有一台运行 nginx 和 postfix 的 ubuntu hardy 机器。Ruby 已安装,我们将了解如何使用 Thin 及其 Rack 功能来处理脚本。现在到了写剧本的时候了,我画了一个空白。
已经很长时间了,如果我没记错的话,这个过程是这样的;
- 读取 HTTP 标头
- 解析参数
- 发送电子邮件
- 发送重定向标头
从广义上讲,这个问题已经得到了回答。弄清楚如何使用答案比预期的要复杂,我认为值得分享。
第一步:
我突然了解到 nginx 不直接支持 cgi 脚本。您必须使用其他一些进程来运行脚本并让 nginx 代理请求。如果我在 php 中执行此操作(事后看来,我认为这将是一个更自然的选择),我可以使用 php-fcgi 之类的东西,并期望生活会非常简单。
Ruby 和 fcgi 感觉相当令人生畏。但是,如果我们放弃在运行时加载这些东西的理想,那么 Rack 可能是最直接的解决方案,而 Thin 包含我们需要的一切。学习如何用它们制作基本的小应用程序对像我这样的 Rails 新手来说非常有益。Rails 应用程序的基础似乎隐藏了很长时间,而 Rack 帮助我进一步揭开了帷幕。
尽管如此,听从耶胡达的建议并查阅辛纳屈,却是另一个惊喜。我现在有一个在 Thin 实例中运行的基本 sinatra 应用程序。它以我收集的标准方式通过 unix 套接字与 nginx 通信。Sinatra 提供了一种非常优雅的方式来处理进入应用程序的不同请求和路由。您所需要的只是get '/' {}
开始处理对虚拟主机的请求。要添加更多(以干净的方式),我们只需将 routes/script.rb 包含到主文件中。
这些路由文件将调用存储在单独的类库中的功能:
弄清楚这么简单的事情的纯粹恐惧会伴随我一段时间。我期待冷静地让 nginx 知道 .rb 文件将被执行并继续执行它。现在这个小 sinatra 应用程序已经启动并运行了,如果我将来想添加额外的功能,我可以直接投入使用。
执行:
ContactPost 类处理消息传递方面。它只需要知道请求中的参数和电子邮件的目标。ContactPost::action 启动一切并返回控制器重定向到的地址。
有一个单独的 ContactTarget 类,它执行一些身份验证以确保指定的目标接受来自 request.referrer 中给出的 URL 的消息。这是在 ContactTarget::accept? 正如我们可以从 ContactPost::action 方法中猜到的那样;
ContactPost::successful 和 ContactPost::failed 通过将 HTML 表单提供的路径与 request.referer URI 结合起来,各自返回一个重定向地址。因此,所有行为都在 HTML 表单中指定。未来使用此脚本的网站只需在用户自己的 ~/cgi/contact.conf 中列出,它们就会消失。这是因为 ContactTarget 在 /home/:target/cgi/contact.conf 中查找详细信息。也许有一天这将是不合适的,但现在它对我的目的来说还不错。
send 方法很简单,它创建一个简单的 Email 类的实例并将其发送出去。Email 类几乎基于 Ruby net/smtp 文档中给出的标准用法示例;
我需要做的就是构建应用程序,让 nginx 知道要与哪个套接字通信,然后我们就走了。
感谢大家对正确方向的有用指示!辛纳特拉万岁!
validation - 验证嵌套模型?
更具体地说,“如何验证模型是否需要创建至少 x 个有效的关联模型?” . 我一直在尝试验证以与父级相同的形式创建的嵌套模型(并最终通过 jQuery 显示即时验证)。作为一个流行的例子,让我们假设以下模型和模式。
如您所见,所有验证都在模式定义中完成。这里重要的是“ has 2..n, :tasks
”。鉴于 params 哈希中的嵌套任务属性将生成有效任务,此验证实际上正常工作。但是,如果他们产生无效任务,则不会创建该任务,您最终会得到一个少于 2 个任务的项目,因此是一个无效的项目对象。
据我了解,这是因为它无法确定任务属性是否有效,直到它尝试保存任务,并且因为 -据我所知- 在项目之前无法保存任务,该项目不知道任务是否有效。我的假设是否正确?
无论如何,我希望会有一个快速的答案,但它似乎没有我希望的那么微不足道。如果您有任何建议,将不胜感激。
iphone - 在没有 Mac 的情况下开发 iPhone 应用程序?
我正在为我妻子的手机构建一个 iPhone 应用程序,但对购买 Mac 作为一次性工作的开发平台不感兴趣。应用程序:
- 应该在 iPhone 上独立运行(即没有网络连接)
- 使用周围的 iPhone Javascript 库之一创建的 GUI 是完全可以接受的
- 会做一些数据库 IO 来读取和更新数据
- 没有商业价值,绝不会被任何人使用
这是我的想法:
- 越狱 iPhone
- 在 iPhone 上安装 Ruby + Sinatra
- 使用 Sinatra 编写应用程序,在 iPhone 上访问数据库(SQLite?)
要在 iPhone 上访问应用程序:
- 在后台启动 Sinatra 应用程序(这可能吗?)
- 启动 Safari 浏览器会话
- 导航到 Sinatra 应用程序,例如http://localhost:12345
- 等等
这似乎是一种奇怪的方法,但我想不出一种更简单的方法来编写独立的 iPhone 应用程序而不购买 Mac。有没有更好的方法来做到这一点?
ruby - 如何创建基于 Heroku 的 Sinatra 应用程序
我正在尝试创建基于 Sinatra 的 heroku 应用程序而没有任何运气?
ruby - 续集宝石的缺点
在基于 Sinatra 的应用程序上工作时,是否有 Sequel ORM 的替代品?
ruby - 部署 Compojure/Sinatra 应用程序
部署 compojure/sinatra 应用程序的首选方式是什么?我在主机上运行了多个站点,因此无法在端口 80 上运行 jetty/mongrel。我应该如何处理在同一主机上运行的多个站点/应用程序?
ruby - Sinatra 服务器推送?
将数据从用 Sinatra 编写的服务器推送到客户端的最佳方式是什么?类似于聊天室,但没有 Ajax 每 2500 毫秒轮询一次。
我知道 Rails 中的剑圣,但对 Sinatra 很好奇。
mysql - Sequel + Sinatra + Phusion Passenger + MySQL 连接管理
我们将 Sinatra 和 Sequel 用于小型 API 实现。然而,我们遇到的问题是,在每个页面请求上,Sequel 都会打开与 MySQL 的新连接,并让它们保持打开状态,直到它们超时,或者您重新启动 Apache。
关于如何重用连接的文档并不多,因此任何帮助、解释和/或正确方向的指示都会有所帮助。