为了保持Ruby在布尔方法中使用问号的习惯(例如person.is_smart?),我想对Rails中的ActiveRecord字段做同样的事情:
rails generate model Person is_smart?:boolean
Run Code Online (Sandbox Code Playgroud)
我实际上没有运行上述声明.我假设数据库字段中不能有问号.rails会适当地处理这个吗?简单地从模型中留下问号是最佳做法吗?
使用Rails 3.2.8
ruby activerecord ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2
我正在使用markdown文件的YAML标题将excerpt变量添加到我可以在其他地方使用的博客帖子中.在其中一个摘录中,我通过降价链接标记引用了早期的博客文章,我使用液体模板数据变量{{ site.url }}代替网站的基本URL.
所以我有类似的东西(有点修剪)
---
title: "Decluttering ordination plots in vegan part 2: orditorp()"
status: publish
layout: post
published: true
tags:
- tag1
- tag2
excerpt: In the [earlier post in this series]({{ site.url }}/2013/01/12/
decluttering-ordination-plots-in-vegan-part-1-ordilabel/ "Decluttering ordination
plots in vegan part 1: ordilabel()") I looked at the `ordilabel()` function
----
Run Code Online (Sandbox Code Playgroud)
但是,jekyll和Maruku md解析器不喜欢这个,这让我怀疑你不能在YAML头中使用液体标记.
是否可以在jekyll处理的页面的YAML标题中使用液体标记?
我从Maruku得到的错误是:
| Maruku tells you:
+---------------------------------------------------------------------------
| Must quote title
| ---------------------------------------------------------------------------
| the [earlier post in this …Run Code Online (Sandbox Code Playgroud) 我已经提到了安装Ruby on Rails - Mac OS Lion,并关注了Alain Beauvois的回复并得到了很多东西.唯一的区别是我使用1.9.3而不是1.9.2.
我创造了.bash_profile甚至确保它是open -e .bash_profile由Alain Beauvois所说的,甚至添加了这条线.
但现在看来问题是我收到了这个错误:
Error running 'make', please read /usr/local/rvm/log/ruby-1.9.3-p374/make.log
There has been an error while running make. Halting the installation.
Run Code Online (Sandbox Code Playgroud)
引用的日志包含:
[2013-02-02 21:41:52] make
CC = clang
LD = ld
LDSHARED = clang -dynamic -bundle
CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration -pipe
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -D_XOPEN_SOURCE …Run Code Online (Sandbox Code Playgroud) puts "hi"
puts "bye"
Run Code Online (Sandbox Code Playgroud)
我想存储到目前为止的代码的STDOUT(在这种情况下,hi \nbye变成一个变量说'结果'并打印出来)
puts result
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是我已经将R代码集成到我的Ruby代码中,当R代码运行时,其输出被提供给STDOUT,但是在代码内部无法访问输出以进行一些评估.对不起,如果这令人困惑.因此,"放置结果"这一行应该让我高兴和再见.
我的数据库中有一个存储为时间戳的字段,我需要在EPOCH时间内以秒为单位输出.
对于Ruby/Rails来说真的很陌生,在本周末我试图自己解决这个问题之后,我试图在这里寻求建议.
我在FreeBSD上完成了一个完整的Ruby/Apache/Passenger设置,我正在尝试完成使用Windows作为Ruby开发环境的任务.
至今:
"> rake db:create"告诉我:
请安装sqlite3适配器:( gem install activerecord-sqlite3-adaptersqlite3不是捆绑包的一部分.将其添加到Gemfile.)
我没有"理解".试图安装activerecord-sqlite3-adapter给我一个"找不到有效的宝石......"
"> gem install sqlite3"返回:
Building native extensions. This could take a while...
ERROR: Error installing sqlite3:
ERROR: Failed to build gem native extension.
D:/Development/Ruby200-x64/bin/ruby.exe extconf.rb
checking for sqlite3.h... *** extconf.rb failed ***
现在我停留在我甚至不知道我的Ruby on Windows安装的状态的位置.我正在尝试遵循主要的Rails教程并且它没有指定任何这些问题(可能是因为Ruby在Windows上似乎是很多人的自然痛苦.)
我错过了什么?!?我只是想在Windows上为Ruby安装sqlite3,看起来很简单吧?
如果我这样做">rais db"了SQLite shell:
SQLite version 3.7.15.2 2013-01-09 11:53:05
类似问题的步骤无法解决我的问题: 在Windows 7上安装SQLite 3.6
Ruby提供了两种以编程方式引发异常的可能性: raise并且fail都是Kernel方法.根据这些文件,它们完全相同.
出于习惯,我raise到目前为止只使用过.现在我找到了几个建议(例如这里),raise用于捕获异常,以及fail用于不应处理的严重错误.
但它真的有意义吗?当你编写一个类或模块,并在内心深处产生问题时fail,你正在查看代码的编程同事可能会很高兴地了解你的意图,但使用我的代码的人很可能不会看到我的代码,无法知道,异常是由a raise还是by 引起的fail.因此,我谨慎使用raise或fail不会对他的决定产生任何影响,无论她是否应该处理.
有人会在我的论点中看到瑕疵吗?还是有其他标准,我可能想用fail而不是raise?
在Ruby中,有Object#freeze阻止进一步修改对象:
class Kingdom
attr_accessor :weather_conditions
end
arendelle = Kingdom.new
arendelle.frozen? # => false
arendelle.weather_conditions = 'in deep, deep, deep, deep snow'
arendelle.freeze
arendelle.frozen? # => true
arendelle.weather_conditions = 'sun is shining'
# !> RuntimeError: can't modify frozen Kingdom
script = 'Do you want to build a snowman?'.freeze
script[/snowman/] = 'castle of ice'
# !> RuntimeError: can't modify frozen String
Run Code Online (Sandbox Code Playgroud)
但是,没有Object#unfreeze.有没有办法解冻冻结的王国?
在Ruby(而不是Rails)中的else if条件中检查变量是否为空的最佳方法是什么?
elsif not variable.to_s.empty?
# do something
end
Run Code Online (Sandbox Code Playgroud)
要么
elsif !variable.to_s.empty?
# do something
end
Run Code Online (Sandbox Code Playgroud)
要么
elsif variable.to_s.length > 0
# do something
end
Run Code Online (Sandbox Code Playgroud) ruby ×10
windows ×2
activerecord ×1
coding-style ×1
conventions ×1
exception ×1
installation ×1
jekyll ×1
liquid ×1
macos ×1
makefile ×1
pack ×1
shoes ×1
sqlite ×1
stdio ×1
yaml ×1