我有一个实例变量@limit,它必须大于0且不大于20.我目前有这样的代码:
@limit = (params[:limit] || 10).to_i
@limit = 20 if @limit > 20
@limit = 0 if @limit < 0
Run Code Online (Sandbox Code Playgroud)
这看起来很难看.有没有更好的方法将整数限制为一系列值?
谢谢!
Sinatra定义了许多似乎存在于当前范围内的方法,即不在类声明中.这些是在Sinatra gem中定义的.
我希望能够编写一个gem,它将创建一个我可以从全局范围调用的函数,例如
add_blog(:my_blog)
Run Code Online (Sandbox Code Playgroud)
然后,这将在全局范围内调用函数my_blog.
显然我可以使用add_blog函数monkeypatch gem中的Object类,但这似乎有点过分,因为它会扩展每个对象.
在我的一个模型中,我有这样的代码:
def lendable_category=(i)
set_category(i)
end
def free_category=(i)
set_category(i)
end
def skill_category=(i)
set_category(i)
end
Run Code Online (Sandbox Code Playgroud)
这些方法是我添加的虚拟参数,因此我可以使用params哈希保存对象而不会强制控制器中的哈希值.
三次说同样的事并不好.有没有更好的方法来创建这样的相同方法?
我有这样的代码:
t = "%#{term}%"
where('name like ? or email like ? or postcode like ?', t, t, t)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,它正在跨多个领域进行搜索.
有没有办法避免重复的t?这让我觉得很脏.
谢谢
我刚刚升级到Express版本3,我看到我的中间件出错了.特别:
Error: Most middleware (like session) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
堆栈跟踪是:
at Function.Object.defineProperty.get (/home/phpsaravana/nodeshop/node_modules/express/lib/express.js:89:13)
at module.exports (/home/phpsaravana/nodeshop/node_modules/connect-mongo/lib/connect-mongo.js:30:39)
at Object.<anonymous> (/home/phpsaravana/nodeshop/admin.js:6:42)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:906:3
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
在Angular 2中,我可以创建一个组件,如下所示:
import {Component, Template} from 'angular2/angular2'
@Component({
selector: 'my-component'
})
@View({
inline: "<div>Hello my name is {{name}}</div>"
})
export class MyComponent {
constructor() {
this.name = 'Max'
}
sayMyName() {
console.log('My name is', this.name)
}
}
Run Code Online (Sandbox Code Playgroud)
(来源:http://blog.ionic.io/angular-2-series-components/)
然后将其编译为常规ES5.
我的问题分为两部分:
是否可以在实例化Ruby对象后更改它的类,如:
class A
end
class B
end
a = A.new
a.class = B
Run Code Online (Sandbox Code Playgroud)
或类似的.
(上面的代码没有运行,因为类是只读变量)
我知道这不可取,有点奇怪,而不是我打算做的事情,但有可能吗?
在我的production.rb中,我将asset_host设置为CloudFront,如下所示:
config.action_controller.asset_host = 'http://xxxxxxxx.cloudfront.net'
Run Code Online (Sandbox Code Playgroud)
现在我发现在某些情况下(特别是输出JavaScript嵌入到另一个站点)我需要在开发环境中设置asset_host,默认的null不会删除它.理想情况下我想设置:
config.action_controller.asset_host = 'http://localhost:3000'
Run Code Online (Sandbox Code Playgroud)
但这个端口无法保证,我不愿意硬编码.有没有办法将asset_host设置为当前域和端口?
谢谢!
我有一个节点应用程序,我正在尝试部署到Open Shift.这是快递发电机的基本快递,几乎是香草.它在本地运行.当我推送到OpenShift时,我收到以下错误:
503 Service Unavailable
No server is available to handle this request.
Run Code Online (Sandbox Code Playgroud)
现在我并不感到惊讶,因为我已经将一个全新的应用程序一次性推向开放式转换,但我想知道的是如何找到它们?
我该如何调试呢?如何破解服务器并看看发生了什么?
我有多个具有多个依赖项的项目.有些项目共享依赖项,因此我们已经开始使用git版本控制来允许我们在不破坏其他项目的情况下更新依赖项.
我可能有这样的结构:
Project A
|
---> Dep B version 1.0.0
Project C
|
---> Dep B version 2.0.0
Run Code Online (Sandbox Code Playgroud)
目前,我们已将项目签出在一个文件夹中,然后我们使用Zelda或NPM链接将依赖项连接到正确的节点模块,因此在我的项目文件夹中,我会:
projects
| dep_b
| project_a
| project_c
Run Code Online (Sandbox Code Playgroud)
每个文件夹都是一个git仓库.项目A和C将查看其父文件夹以查找Dep B.
直到我们开始使用版本控制,这工作得很好.但是现在,我们有每个依赖项的多个版本,并非所有版本的依赖项都与所有项目兼容.我找不到一种简单的方法将正确的签出版本连接到正确的项目中.
是否有工具可以帮助管理这个?