当我通过localhost访问我的Webrick服务器时,或者当我运行rails迁移时,我的development.log被正确写入.但是,当我使用"rails c"启动我的rails控制台然后尝试创建一个新的数据库对象并通过像"user.save"这样的命令保存它时,我在控制台中看到了SQL语句,但没有写入开发日志.
大多数人在回答类似这样的问题时说"检查以确保配置设置为正确的环境".我已经完成了这个,并且可以在我的系统上说这是一个全新的rails应用程序.
任何帮助,将不胜感激.谢谢!
在新的Rails 3.2应用程序中,您可以在config/initializers/wrap_parameters.rb中找到以下行:
ActiveSupport.on_load(:action_controller) do
wrap_parameters format: [:json]
end
# Disable root element in JSON by default.
ActiveSupport.on_load(:active_record) do
self.include_root_in_json = false
end
Run Code Online (Sandbox Code Playgroud)
我对第二个代码块的理解是,如果你将一个对象转换为json,它将不包含一个根节点(即users => {:name =>'John'},而它只是{:name =>'约翰'}
那么第一个wrap_parameters块会做什么?它作用于action_controller ..为什么?
这是我的第一个Coffeescript功能,无法弄清楚如何在用户点击并触发事件后不刷新我的页面:
jQuery ->
$(".answer_link").click ->
$val = $(this).attr 'id'
$id = $val.replace(/answer_link_/, '')
$input = "#new_answer_" + $id
$($input).toggle 'slow'
Run Code Online (Sandbox Code Playgroud)
谢谢!
出于某种原因,这还没有回家,我想知道是否有人可以帮忙解释..
我注意到在安装'guard'宝石时,他们建议在gemfile中的'开发组'中放置很多宝石,例如'growl'和'rb-notifu':https: //github.com/guard/警卫 ..
Ryan Bates似乎在一个屏幕上似乎将其中许多放在'开发'和'测试'中:http://railscasts.com/episodes/264-guard?view = ascicast
但另一方面则将其全部用于"测试":http://railscasts.com/episodes/275-how-i-test
理解这一点很好,所以我不必一直参考教程.谢谢!
新手对Node的理解是,如果我重写同步或内联代码来利用函数/回调,我可以确保我的代码是非阻塞的.我很好奇这是如何在事件堆栈方面工作的.这里的简单示例:不了解回调 - Stackoverflow是否会阻止:
var post = db.query("select * from posts where id = 1");
doSomethingWithPost(post)
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
虽然这不会:
callback = function(post){
doSomethingWithPost(post)
}
db.query("select * from posts where id = 1",callback);
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
好的,我知道我们应该使用回调.但就事件堆栈而言,为什么这样做呢?Javascript是单线程..在第一个示例行中,一个使用昂贵的阻塞I/O操作.在第一行完成之前,第2行无法执行.这是因为第2行需要第1行的信息吗?或者是因为I/O事件只是从根本上阻止了操作,这意味着他们抓住了控制权并且在完成之前不再回复...
在第二个例子中,昂贵的I/O已被移动到一个函数中,我们现在有一个回调函数.当然,在完成I/O之前,回调不能执行.这不会改变.因此,执行1到2之间所需的时间差异必须主要是第二个请求到达服务器时会发生的情况.
如果第二个请求遇到示例一,它将无法处理,直到请求1由于阻塞操作而完成..但在示例二中..将操作移动到函数中会自动生成子进程或充当多线程?如果Javscript是单线程的,那么除非有某种方式进行并行处理,否则这仍然会产生问题.如果我们使用非阻塞技术(如子进程等),函数/回调是否仅保证是非阻塞的. .
首先是我的背景:我是刚接触Ruby的Java新手.如果这有帮助.
我对布局参数如何工作感到困惑.我正在关注创建Android应用程序的基本Hello World简介.第1步,扩展Activity类,使用onCreate()方法访问XML布局.好的,我明白了.
然后我在Main.XML中创建一个布局(比如RelativeLayout).所以这是利用了扩展ViewGroup类的RelativeLayout类,到目前为止还可以.然后让我说我在里面创建一个按钮.这是我的问题开始的地方.如果我查看我正在关注的示例,我会看到属性被分配给属于RelativeLayout类的按钮(即:android:layout_alignParentRight ="true").这些似乎是布局参数.但为什么这有效呢?按钮类似乎继承自View类.为什么按钮对象可以接受RelativeLayout对象的属性?也许我的Ruby编程让我很困惑..
谢谢!
更新:为了后人:感谢Slothsberry指出XML Layouts链接,它似乎在"属性"和"布局参数"部分的两个部分中清楚地描述了答案.属性部分如下:
每个View和ViewGroup对象都支持各种XML属性.某些属性特定于View对象(例如,TextView支持textSize属性),但这些属性也可由任何可扩展此类的View对象继承.有些对于所有View对象都是通用的,因为它们是从根View类继承的(就像id属性一样).并且,其他属性被认为是"布局参数",这是描述View对象的特定布局方向,由对象的父ViewGroup中对象定义的属性.
布局参数部分可能是真正回答这个问题的部分.它声明:
每个ViewGroup类都实现一个扩展ViewGroup.LayoutParams的嵌套类.此子类包含定义每个子视图的大小和位置的属性类型,适用于视图组.如图1所示,父视图组定义了每个子视图(包括子视图组)的布局参数.
他们也提供了一个很好的图表.似乎初学程序员需要认识到,在引用Java类时,XML更像是一个CSS表,并且在计算并将其转移到Java类对应项之前,首先以嵌套方式计算属性.这是我目前的理解反正:)
我正在使用Lion.我有一个错误,在每个新的终端会话输出:
-bash: __rvm_add_to_path: command not found
Run Code Online (Sandbox Code Playgroud)
这是一个几乎全新的用户帐户.. RVM安装在机器上的另一个帐户上.~/.bashrc&〜/ .bash_profile都是空白的... env的输出是:
TERM_PROGRAM=Apple_Terminal
SHELL=/bin/bash
TERM=xterm-256color
TMPDIR=/var/folders/ry/8zsyknmx7dj4_2zzvn1n71500000gn/T/
Apple_PubSub_Socket_Render=/tmp/launch-jsfKPw/Render
TERM_PROGRAM_VERSION=303
TERM_SESSION_ID=3EBC0F1A-9867-41E5-8873-75E84B9F712F
USER=incorvia
COMMAND_MODE=unix2003
SSH_AUTH_SOCK=/tmp/launch-ZQqgPj/Listeners
Apple_Ubiquity_Message=/tmp/launch-u3d1lp/Apple_Ubiquity_Message
__CF_USER_TEXT_ENCODING=0x1F5:0:0
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
PWD=/bin
LANG=en_US.UTF-8
HOME=/Users/incorvia
SHLVL=1
LOGNAME=incorvia
DISPLAY=/tmp/launch-0B0I8s/org.x:0
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)
我在这里看不到任何与RVM有关的内容..我还能在哪里看到它?
=====
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
# Tell the terminal about the working directory at each prompt.
if [ …Run Code Online (Sandbox Code Playgroud) 我有一个模块可以调用"计算器",我想要包含在"产品"类中.计算器将扩展"Product",它将类方法复制到Product上.其中一个类方法是"memoize".这个想法是我可以做这样的事情:
module Calculator
def self.extended(base)
base.memoize :foo_bar
end
end
Run Code Online (Sandbox Code Playgroud)
为了记住方法(特别是类方法):foo_bar.在memoize中我调用方法"alias_method",它尝试将类方法别名为另一个名称(此处为:foo_bar).这失败了.Memoize看起来像:
module Calculator (the extended module)
def memoize(name)
alias_method "memoized_#{name}", name
end
end
Run Code Online (Sandbox Code Playgroud)
当通过memoize:foo_bar调用它时,alias_method行踢出一个错误,说Product没有方法"name"..我的理解是因为alias_method会尝试别名实例方法而不是类方法..(我不知道为什么但没什么大不了的)..
我可以像这样重新打开本征类
module Calculator
def memoize(name)
class << self
alias_method "memoized_#{name}", name
end
end
end
Run Code Online (Sandbox Code Playgroud)
这可以工作,但名称不适用于类<< self definition的范围.人们已经提到过使用self.class_eval和self.instance_eval,但这些似乎都不起作用..我也喜欢我的蛋糕并且也吃它..我怎么能保持alias_method动态但是在class_methods上使用它?
使用omniauth登录策略,将未登录的用户重定向到身份提供者.身份提供商将确保用户登录,然后将用户重定向到回调URL,允许用户使用身份提供商的身份验证登录到第三方站点.此工作流程由Facebook在其图表中解释:
https://developers.facebook.com/docs/user_registration/flows/
如何确保恶意用户不会欺骗此回调,以便他可以访问身份验证用户的第三方帐户?
如果我想创建一个新的rails gem,为Rails视图添加方法,那么正确的方法是什么?它是否扩展ActionView :: Base?它会以某种方式涉及ApplicationHelper吗?
ruby ×2
actionview ×1
android ×1
bash ×1
coffeescript ×1
java ×1
jquery ×1
logging ×1
node.js ×1
nonblocking ×1
omniauth ×1
rubygems ×1
rvm ×1