我已经在桌面上安装了最新版本的VirtualBox(4.3.4).
我正在使用Vagrant运行基于示例64位Ubuntu 12.04 LTS框的VM:
http://files.vagrantup.com/precise64.box
每次我跑vagrant up
,我都会收到以下警告:
The guest additions on this VM do not match the installed version of
VirtualBox! In most cases this is fine, but in rare cases it can
cause things such as shared folders to not work properly. If you see
shared folder errors, please update the guest additions within the
virtual machine and reload your VM.
Guest Additions Version: 4.2.0
VirtualBox Version: 4.3
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,但我找不到升级到Guest Additions v4.3的方法.Ubuntu存储库中的最新版本精确到4.1,并且官方VirtualBox下载页面上没有下载链接.
假设您正在Rails中实现REST API.提供集合时,您可能只想包含一些属性:
/people
Run Code Online (Sandbox Code Playgroud)
但是,当提供单个资源时,您希望包含所有属性:
/people/1
Run Code Online (Sandbox Code Playgroud)
我没有看到如何使用ActiveModel :: Serializers,因为这些示例都使用每个模型定义一个序列化程序的模式(使用标准命名约定),并且当您执行以下操作时AMS会自动使用控制器中的正确模式:
render json: @people
Run Code Online (Sandbox Code Playgroud)
要么:
render json: @person
Run Code Online (Sandbox Code Playgroud) 是否有一个很好的教程/指南/博客文章/书籍章节/截屏/等试图全面涵盖与ActiveRecord中的锁,事务和隔离级别有关的所有内容?(最好与Rails 4.0相关)
指南中有一个简短的部分,当然还有一些API文档,但它是一个非常重要的(对我而言)难以理解的域,这是我第一次在Rails应用程序中认真对待数据完整性.我想得到一个很好的理解,所以我可以做得很好.
已知资源列表
activerecord locking transactions ruby-on-rails isolation-level
我是Rails的新手,无法找出组织资产的最佳方法.这个问题的目的是收集我的想法,征求意见,并随着时间的推移进化文档 - 也许有一天它可能是一个Rails指南.(Rails Wiki似乎已经死了.)这将作为新手概念化的辅助,而不是参考,因此它将仅限于最常见的场景.
资产管道 - 概述
有关管道的目的,好处和内部工作方式的详细信息,请从本指南开始:http://guides.rubyonrails.org/asset_pipeline.html 我将仅在此总结与我的目的相关的位.
管道必要的原因是:
管道的额外好处是:
资产管道 - 默认文件系统布局
app|lib|vender/assets/
- 用于将由管道处理的文件.app/assets/
- 专门针对您为应用程序创建的文件.lib/assets/
- 专门针对您为跨多个应用程序共享而创建的文件.vendor/assets/
- 专门用于其他人创建的文件,例如jQuery和Twitter Bootstrap(虽然它们经常由gem提供,而不是直接导入/ vender).public/
- 此处的文件保留原样,可直接从您的Web应用程序的根路径('/')获取.资产管道 - 默认文件和行为
应用程序/资产/ JavaScript的/ application.js中
//= require jquery
//= require jquery_ujs
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
应用程序/资产/样式表/ application.css
/*
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
public/404.html
public/robots.txt
...
的Gemfile
...
gem 'jquery-rails'
...
Run Code Online (Sandbox Code Playgroud)
以下是资产管道编译器使用新Rails应用程序的默认设置执行的操作:
application.js
,application.css …
在Amazon EC2上,当您使用EBS卷作为EC2实例的根设备时,"终止时删除"标志默认为true,这意味着在销毁实例时将自动删除卷.
这有什么意义?
如果使用EBS而不是本地实例存储的主要好处是存储持久性,而不依赖于实例持久性,那么这不能完全破坏它的目的吗?
如果您不介意根设备与实例一起被销毁,为什么不使用更便宜且更少创建/管理的本地实例存储?
相关参考文献:
全新生成的Rails 4.2.0项目.Ran rails s
,使用WEBrick表现得如预期:
vagrant@web1:~$ netstat -nlpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 27158/ruby2.1
tcp6 0 0 ::1:3000 :::* LISTEN 27158/ruby2.1
Run Code Online (Sandbox Code Playgroud)
添加puma到Gemfile,运行bundle,然后rails s
再次; 想出了Puma,但只绑定了tcp6接口,而不是tcp:
vagrant@web1:~$ netstat -nlpt
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 ::1:3000 :::* LISTEN 27116/ruby2.1
Run Code Online (Sandbox Code Playgroud)
有什么线索的原因?我一直在谷歌搜索没有运气.
更新:
跑步puma -b tcp://0.0.0.0:3000
工作.但是,将bind指令添加到config/puma.rb并运行rails s
不会:
bind 'tcp://0.0.0.0:3000'
Run Code Online (Sandbox Code Playgroud)
然而,我的配置文件中的threads/workers指令正在工作,因此我知道配置文件正在加载和使用.(甚至添加了一个put语句以确定.)
如果我只是运行puma
,绑定到正确的接口,配置文件甚至会被拾取.我可能只需要运行puma
而不是rails s
,尽管它很烦人,必须添加到我的开发人员文档中.
UPDATE2:
我误解了.运行 …
有人知道将ffmpeg格式值映射到MIME类型和推荐文件扩展名的参考吗?我的谷歌尝试未能发现任何事情.
我手动整理了一个小小的列表,其中包含来自维基百科,IANA和Mozilla开发者网络的猜测和线索,用于我在视频输入测试集合中遇到的格式子集:
ffmpeg Format Extension MIME Type
??????????????????????? ????????? ??????????????????????
asf asf application/vnd.ms-asf
avi avi video/x-msvideo
flv flv video/x-flv
matroska,webm webm video/webm
m4v m4v video/x-m4v
mov,mp4,m4a,3gp,3g2,mj2 mp4 video/mp4
mpeg mpeg video/mpeg
mpegts mpeg video/mpeg
mpegvideo mpeg video/mpeg
ogg ogv video/ogg
matroska mkv video/x-matroska
webm webm video/webm
Run Code Online (Sandbox Code Playgroud)
不过,不知道我是否打出了正确的电话.
(测试文件已经有文件扩展名,但我假设用户上传的文件扩展名无关紧要,并且应该根据ffprobe和智能映射重命名该文件......)
很难理解如何在grunt-usemin的配置和使用中的各个点处理路径.
我有以下repo布局,其中repo root也将是web app root:
/dashboard/index.html
/Gruntfile.js
/vendor/...some 3rd party CSS and JS...
Run Code Online (Sandbox Code Playgroud)
所以index.html文件 - > somedomain.com/dashboard/index.html.
index.html文件包含/ vendor文件夹中的一些CSS和JS资产.我有grunt配置为将构建输出放在构建文件夹中:
/build/dashboard/index.html
Run Code Online (Sandbox Code Playgroud)
在index.html文件中,我有包含所有CSS链接和JS脚本标记的usemin块:
<!-- build:css(.) app.min.css -->
<!-- build:js(.) app.min.js -->
Run Code Online (Sandbox Code Playgroud)
我必须使用"(.)"指定"替代搜索路径",以便"/vendor/backbone.js"的脚本标记可以在正确的位置找到它.直到我这样做,它正在寻找/dashboard/vendor/backbone.js.
我希望处理CSS/JS资产的输出输出到build/dashboard/app.min.css和build/dashboard/app.min.js,并由index.html使用简单的相对"app.min"包含. css/js"路径.
问题是,grunt-usemin似乎正在使用"app.min.*"路径,我正在为两个上下文指定路径,使得它们无法一起工作:
1)为了创建文件,它将路径视为相对于构建目录; 文件最终在build/app.min.css和build/app.min.js中.
2)它将路径视为相对于index.html文件,以生成新的链接/脚本标记; 浏览器加载build/dashboard/index.html,然后尝试加载"app.min.css",映射到build/dashboard/app.min.css.
有解决方案吗?
我使用以下钩子检查正在执行包含的模块include Foo
:
module Foo
def self.included(includer)
puts includer
end
end
Run Code Online (Sandbox Code Playgroud)
Module#include
在模块中(通常使用它)与顶层的行为不同.在模块内部,self
是模块,它是一个实例Module
.当我打电话include
时,模块做,包括是什么样self
的:
module Bar
puts self # => Bar
include Foo # => includer: Bar
end
Run Code Online (Sandbox Code Playgroud)
在ruby脚本的顶层,self
是main
,它是一个实例Object
.当我把include
在顶层,该模块包括做是Object
,之类的东西self
是:
puts self # => main
include Foo # => includer: Object
Run Code Online (Sandbox Code Playgroud)
有人可以解释原因吗?
顶级对象必须是特殊的; 如果我打电话to_s
或打电话inspect
,它只是说main
,但如果我创建另一个对象Object.new
并调用to_s
或inspect
打开它,我得到通常的对象表示法:#<Object:0x007fae0a87ac48> …
可能重复:
Python try-else
我没有看到它的好处,至少基于我刚刚在Dive Into Python中阅读的示例:
try:
from EasyDialogs import AskPassword
except ImportError:
getpass = default_getpass
else:
getpass = AskPassword
Run Code Online (Sandbox Code Playgroud)
(http://www.diveintopython.net/file_handling/index.html)
你为什么不能用更短/更简单的方法达到同样的效果:
try:
from EasyDialogs import AskPassword
getpass = AskPassword
except ImportError:
getpass = default_getpass
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
activemodel ×1
activerecord ×1
amazon-ebs ×1
amazon-ec2 ×1
class ×1
coding-style ×1
ffmpeg ×1
ffprobe ×1
grunt-usemin ×1
gruntjs ×1
idioms ×1
include ×1
ipv6 ×1
json ×1
locking ×1
mime-types ×1
node.js ×1
puma ×1
python ×1
rest ×1
ruby ×1
sprockets ×1
transactions ×1
ubuntu ×1
vagrant ×1
video ×1
virtualbox ×1
yeoman ×1