我正NoMethodError试图从我的一个控制器类中访问我的一个辅助模块中定义的方法.My Rails应用程序使用helper带有:all符号的类方法,如下所示:
class ApplicationController < ActionController::Base
helper :all
.
.
end
Run Code Online (Sandbox Code Playgroud)
我的理解是,这应该使我的所有控制器类自动包含app/helpers目录中的所有辅助模块,因此将所有方法混合到控制器中.它是否正确?
如果我include在控制器中明确指出了辅助模块,那么一切正常.
在Ruby中,我可以定义一个方法foo =(bar):
irb(main):001:0> def foo=(bar)
irb(main):002:1> p "foo=#{bar}"
irb(main):003:1> end
=> nil
Run Code Online (Sandbox Code Playgroud)
现在我想检查它是否已定义,
irb(main):004:0> defined?(foo=)
SyntaxError: compile error
(irb):4: syntax error, unexpected ')'
from (irb):4
from :0
Run Code Online (Sandbox Code Playgroud)
在这里使用的正确语法是什么?我假设必须有一种方法来逃避"foo =",以便它被解析并正确传递给定义的?运营商.
当我发现这个值时,我正在努力序列化值.Ruby有一个TrueClass类和一个FalseClass类,但它没有Boolean类.我想知道为什么会这样.
我看到使用a的一些优点Boolean; 例如,字符串解析可以集中在它上面.
Ruby开发人员比我聪明,所以必须有很多我没看到的好理由.但是现在看起来我喜欢OneClass和一个TwoClass而不是Fixnum.
我目前在Ubuntu 12.04中通过RVM安装了Ruby on Rails.默认数据库是在SQLite3中设置的,但是为了推送到Heroku,我想切换到PostgreSQL.我怎么能做到这一点?
我一直在根据edX在线课程的指令安装Ruby on Rails.
以下是终端命令列表,以及相应的输出:
$ sudo apt-get install ruby1.9.1
Run Code Online (Sandbox Code Playgroud)
安装成功
$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
$ tar zxvf ruby-1.8.24.tgz
$ cd ruby-1..8.24
$ sudo ruby setup.rb
RubyGems 1.8.24 installed
== 1.8.24 / 2012-04-27
* 1 bug fix:
* Install the .pem files properly. Fixes #320
* Remove OpenSSL dependency from the http code path
------------------------------------------------------------------------------
RubyGems installed the following executables:
/usr/bin/gem1.9.1
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切看起来都很好,但我试图安装rails并失败:
$ sudo gem install rails
Fetching: i18n-0.6.1.gem (100%)
Fetching: multi_json-1.3.6.gem (100%)
Fetching: activesupport-3.2.8.gem (100%)
Fetching: builder-3.0.3.gem (100%)
Fetching: activemodel-3.2.8.gem (100%) …Run Code Online (Sandbox Code Playgroud) 有以下代码:
def index
@car_types = car_brand.car_types
end
def car_brand
CarBrand.find(params[:car_brand_id])
rescue ActiveRecord::RecordNotFound
raise Errors::CarBrandNotFound.new
end
Run Code Online (Sandbox Code Playgroud)
我想通过RSpec测试它.我的代码是:
it 'raises CarBrandNotFound exception' do
get :index, car_brand_id: 0
expect(response).to raise_error(Errors::CarBrandNotFound)
end
Run Code Online (Sandbox Code Playgroud)
id等于0的CarBrand不存在,因此我的控制器代码引发了Errors :: CarBrandNotFound,但我的测试代码告诉我没有引发任何内容.我该如何解决?我错了什么?
我正在尝试在Mavericks上安装以下gem版本
显然,therubyracer宝石取决于libv8.
什么是libv8?我的一些研究似乎表明它是Google Chrome使用的某种javascript库?
我在安装它时遇到了麻烦,但是这个很棒的帖子既有我的错误,也有关于如何绕过它的解释清楚的答案.
所以我安装libv8了
gem install libv8 -- --with-system-v8
Run Code Online (Sandbox Code Playgroud)
这是我的理解,这安装了gem,但使用我的本地系统安装v8库而不是... gem附带的版本?无论哪种方式,它都是成功的.
在下一步中,我在安装therubyracergem时遇到了麻烦.我不太确定这个gem是做什么的,只是因为它是我正在尝试的rails项目的依赖项bundle install.
它给了我以下错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/Users/jeeves.butler/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. …Run Code Online (Sandbox Code Playgroud) 我刚刚将RuboCop添加到rails项目中并安装了Sublime软件包以在编辑器中查看RuboCop建议.我试图弄清楚如何从80个字符更改最大行长度,或者完全忽略规则.
目前正在使用中:
我在Mac OS Sierra 10.12上安装Nokogiri(1.6.8.1)时遇到了麻烦.
我尝试使用brew install libxml2 libxslt然后使用命令行选项引用安装目录,但它没有帮助.
我正在尝试运行,brew doctor但系统弹出错误消息
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:在`require'中:无法加载此类文件-active_support / core_ext /对象/空白(LoadError)
在线搜索,另一篇文章建议仅“ gem install activesupport”,但随后我遇到了以下错误:
ERROR: Error installing activesupport:
i18n requires Ruby version >= 2.3.0.
Run Code Online (Sandbox Code Playgroud)
我也尝试过rvm安装ruby-2.3.0,但再次弹出相同的错误
[2019-02-26 10:07:41] requirements_osx_brew_libs_install
requirements_osx_brew_libs_install () {
brew install "$@" --force || {
\typeset ret=$?;
requirements_osx_brew_libs_error "installation";
return $ret
} } current path: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib
PATH=/Users/{user_name}/.aw/pex_resources/scripts/binaries:/usr/local/sbin:/Users/fengjiao/.rbenv/shims:/Users/{user_name}/.nvm/v0.10.32/bin:/Users/fengjiao/bin:/usr/local/sbin:/usr/local/bin:/Users/{user_name}/.rbenv/shims:/Users/{user_name}/.nvm/v0.10.32/bin:/Users/{user_name}/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki:/opt/X11/bin:/Users/fengjiao/gocode/bin:/Users/{user_name}/.rvm/bin
command(10): requirements_osx_brew_libs_install autoconf automake
libtool pkg-config coreutils libyaml readline libksba openssl@1.1
++ brew install autoconf automake libtool pkg-config coreutils libyaml readline libksba openssl@1.1 --force
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in
`require': cannot load such file --
active_support/core_ext/object/blank (LoadError) …Run Code Online (Sandbox Code Playgroud) ruby ×10
rubygems ×2
gcc ×1
heroku ×1
homebrew ×1
libv8 ×1
nokogiri ×1
postgresql ×1
rspec ×1
rubocop ×1
sublimetext3 ×1
syntax-error ×1
therubyracer ×1
ubuntu ×1