我有一个网络应用程序:fooapp.我有一个package.json
根.我想在特定的安装中安装所有依赖项node_modules directory
.我该怎么做呢?
可以说我有两个widget
依赖项.我想最终得到这样的目录结构:
node_modules/
widgetA
widgetB
fooapp/
package.js
lib
..
Run Code Online (Sandbox Code Playgroud)
我跑的时候npm install fooapp/
得到这个:
node_modules/
fooapp/
node_modules/
widgetA
widgetB
package.js
lib/
..
fooapp/
package.js
lib/
..
Run Code Online (Sandbox Code Playgroud)
npm在node_modules目录中创建我的app目录的副本,并将这些包安装在另一个 node_modules目录中.
我理解这对于安装包是有意义的.但我不是require()
我的网页应用程序,我直接运行它.我正在寻找一种简单的方法来将我的依赖项安装到特定的node_modules目录中.
我有两个问题
最佳实践
这些是我能看到的选项,哪个最好?:
技术部分
有没有办法制作私有模块方法?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
Run Code Online (Sandbox Code Playgroud)
在private
中似乎有没有什么影响,我仍然可以调用Thing.priv
没有问题.
我正在寻找一种在Ruby中对字符串执行正则表达式匹配的方法,并在第一次匹配时使其短路.
我正在处理的字符串很长,看起来标准方式(match
方法)会处理整个事物,收集每个匹配,并返回包含所有匹配项的MatchData对象.
match = string.match(/regex/)[0].to_s
Run Code Online (Sandbox Code Playgroud) 我喜欢Bundler,它非常善于依赖管理.我爱npm,安装节点包很容易!我有一个nodejs应用程序,并希望能够指定我的应用程序依赖项,并在我部署我的应用程序的任何地方轻松安装/更新它们.这不是我发布的图书馆,它是一个完整的网络应用程序.
我知道这个npm bundle
命令,但这似乎只是覆盖了安装包的目录.
我习惯以这种方式使用bundler:
# Gemfile
gem "rails", "3.0.3"
Run Code Online (Sandbox Code Playgroud)
仅在主机上存在rails v3.0.3和任何其他必需的gem时才会存在
> bundle install
Run Code Online (Sandbox Code Playgroud)
如何用npm实现类似的功能?
我正在使用Mongoose Library通过node.js访问MongoDB
有没有办法从文档中删除密钥?即不只是将值设置为null,但删除它?
User.findOne({}, function(err, user){
//correctly sets the key to null... but it's still present in the document
user.key_to_delete = null;
// doesn't seem to have any effect
delete user.key_to_delete;
user.save();
});
Run Code Online (Sandbox Code Playgroud) 我似乎经常遇到这种情况.我需要使用数组中每个对象的属性作为键从数组构建一个Hash.
让我们说我需要一个哈希的例子使用ActiveRecord objecs键入他们的ID共同的方式:
ary = [collection of ActiveRecord objects]
hash = ary.inject({}) {|hash, obj| hash[obj.id] = obj }
Run Code Online (Sandbox Code Playgroud)
其他方式:
ary = [collection of ActiveRecord objects]
hash = Hash[*(ary.map {|obj| [obj.id, obj]}).flatten]
Run Code Online (Sandbox Code Playgroud)
Dream Way:我可以并且可能自己创建这个,但是Ruby或Rails中有什么东西会这样吗?
ary = [collection of ActiveRecord objects]
hash = ary.to_hash &:id
#or at least
hash = ary.to_hash {|obj| obj.id}
Run Code Online (Sandbox Code Playgroud) 我试图让这个布局没有javascript发生.
我有一个父div和一个子div,其中包含不断追加的内容.我希望孩子在父母内部对齐并垂直生长.我还希望父级div在子级的高度>父级的高度时滚动.
第一部分非常简单:
#child { position:absolute; bottom: 0 }
Run Code Online (Sandbox Code Playgroud)
第二部分很难,因为绝对定位的元素在内容流之外并且不会触发滚动.
父div跨越浏览器窗口的整个高度(我在设计时不知道)
我需要将传入的参数(单个对象或集合)转换为Array.我不知道论点是什么.如果它已经是一个数组,我想留下它,否则从它创建一个单元素数组.我想要允许method(:objs => obj)
和method(:objs => [obj1, obj2])
这似乎是最好的方法(Array#to_a返回self):
arg = arg.to_a
Run Code Online (Sandbox Code Playgroud)
但红宝石文档说Object#to_a
很快就会过时了.有方便的更换吗?
还有比这更简洁的东西吗?
arg = arg.respond_to?(:to_a) ? arg.to_a : [arg]
Run Code Online (Sandbox Code Playgroud) 在保持时区不变的同时读取,写入和序列化日期和时间变得令人讨厌.我正在使用Ruby(和Rails 3.0)并试图改变DateTime的时区.(到UTC)但不是时间本身.
我要这个:
t = DateTime.now
t.hour
-> 4
t.offset = 0
t.hour
-> 4
t.utc?
-> true
Run Code Online (Sandbox Code Playgroud)
我最接近的是这个,但它并不直观.
t = DateTime.now
t.hour
-> 4
t += t.offset
t = t.utc
t.hour
-> 4
t.utc?
-> true
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法?
既然Rails有时间戳迁移,那么顶部的单个版本号/db/schema.rb
似乎毫无意义.在处理多个开发人员或多个分支时,有时版本号最终不正确.
Rails甚至:version
不再使用该参数了吗?
它是否有任何不正确的错误(如:它不反映最近应用的提交的时间戳)?
例:
ActiveRecord::Schema.define(:version => 20100417022947) do
# schema definition ...
end
Run Code Online (Sandbox Code Playgroud)