可能重复:
如何从Proc对象中提取代码?
将proc或方法对象转换为源字符串的最佳方法是什么?到目前为止,我尝试了两种方法.一个是实现proc的源位置并读取该部分源代码.另一种是使用库巫师和开膛手.我不确定这样做的正确方法是什么.什么是最好的可能取决于各种因素:稳健性,对原始的忠诚度,速度等.包括我建议的方法,但不限于它们,请建议一个策略,并评估其局限性.
我正在为String类编写一个扩展方法来清理非ASCII字符.我正在清理的字符串是UTF-8.
在文件中使用非ASCII字符时,控制台将无法启动,因为它将卷曲引号解释为常规引号.
如何逃避gsub中的卷曲引用?
如何编写使用unicode作为卷引号的gsub(例如U + 201C).
使用Rails 3.07和Ruby 1.9.2.
我使用ruby 1.9.2-p320和Heroku的Taps一起使用'db'命令得到以下错误,例如:
heroku db:pull --app my-app
Run Code Online (Sandbox Code Playgroud)
这会产生如下错误:
Taps Load Error: no such file to load -- sqlite3
Run Code Online (Sandbox Code Playgroud)
-要么-
Taps Load Error: no such file to load -- pg
Run Code Online (Sandbox Code Playgroud)
(是的,顺便说一下,我拥有所有正确的宝石,包括postgres - 本地运行良好 - 和sqlite3,以及卸载,重新安装和更新水龙头和heroku宝石,包括它们以及不包括它们将它们包含在我的Gemfile中.我正在运行Rails 3.2.6)
虽然有一个已知的错误会导致"时区位移"错误:heroku db:push not working,使用tap gem,我还没有看到任何直接解决此问题的SO帖子.
如果我运行以下代码,前两行将返回我所期望的.但是,第三个返回2的二进制表示.
2.to_s # => "2"
2.to_s * 2 # => "22"
2.to_s *2 # => "10"
Run Code Online (Sandbox Code Playgroud)
我知道在调用时传入2 to_s
会将我的输出转换为二进制,但为什么to_s
忽略*
第三种情况呢?如果这有任何区别,我正在运行Ruby 1.9.2.
我正在使用NetBeans,但似乎对Ruby的支持正式死亡(一些社区元素刚刚启动).我已经看到了用于破解ruby-debug的线程以支持NB中的Ruby 1.9调试,但我觉得这不是可行的方法.我刚刚安装了Aptana3,它会很高兴地击中断点,但不支持限制可见性的监视表达式.我似乎无法找到一个直接的答案,为什么它不受支持或是否有任何计划包括它.
在某种文本编辑器中调试Rails3/1.9.2有明显的优势吗?
我在这里结束了,并且正在向大家求助于这个f*#$ ^编码问题.
我在Dreamhost上具有root权限的私有服务器上运行.这里有一些关于我的环境和版本.
$ `which ruby` -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
$ `which bundle` -v
Bundler version 1.0.15
$ `which rails` -v
Rails 3.0.9
Run Code Online (Sandbox Code Playgroud)
除了这个错误,我的rails应用程序运行良好没有问题.但是,当我尝试使用以下encode
方法更改编码字符串时:
NoMethodError: undefined method `encode' for "foobar":String
Run Code Online (Sandbox Code Playgroud)
encode
应该定义,但它不是!Encoding
如果我尝试进入,我会发现irb
:
$ irb
ruby-1.9.2-p180 :001 > Encoding
=> Encoding
ruby-1.9.2-p180 :002 > "foobar".encode('utf-8')
=> "foobar"
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试通过bundle exec使用rails控制台,Encoding
则找不到:
$ bundle exec rails c staging
Loading staging environment (Rails 3.0.9)
ruby-1.9.2-p180 :001 > Encoding
NameError: uninitialized constant Encoding
from …
Run Code Online (Sandbox Code Playgroud) 当调用set_element
Matrix类的实例时,我收到以下错误
NoMethodError: private method ‘set_element’ called for Matrix[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]:Matrix
Run Code Online (Sandbox Code Playgroud)
但是set_element
在文档中的公共实例方法下列出
另外,set_element是[] =(i,j,v)的别名,使用此方法我得到以下错误
ArgumentError: wrong number of arguments (3 for 2)
Run Code Online (Sandbox Code Playgroud)
没有任何意义,任何帮助表示赞赏.
Ruby 1.9.2 p180
我的测试全部通过,我的结果如下所示:
入门
完成时间为361.988408秒.
479个测试,1017个断言,0个失败,0个错误,0个挂起,0个遗漏,0个通知0%通过
为什么我没有看到我曾经在rails 2.3中看到的常见进度点?为什么说"0%通过"?我想知道在看似空白的地方,这些点是否变成了白色并且实际上是在那里?我不想改变我的终端有黑色背景.;-)
同样在我的单元测试中,它说"在0.0秒内完成".这显然是错的.
请帮忙,这是我的学习项目.它在本地但不在线工作:
你好,据说我不需要像rails 3.1.0中的"therubyracer"这样的特殊宝石,但它写在"heroku日志"中:
2011-10-04T23:15:30+00:00 app[web.1]: ActionView::Template::Error (Could not fin
d a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of
available runtimes.
2011-10-04T23:15:30+00:00 app[web.1]: (in /app/app/assets/javascripts/rails.js
)):....
Run Code Online (Sandbox Code Playgroud)
我试图安装"therubyracer",但我安装错误
C:\proj\lagp>gem install therubyracer
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
C:/RailsInstaller/Ruby1.9.2/bin/ruby.exe extconf.rb
checking for main() in -lpthread... no
creating Makefile
make
C:/RailsInstaller/Ruby1.9.2/bin/ruby -e "puts 'EXPORTS', 'Init_v8'" > v8-i386-m
ingw32.def
g++ -I. -IC:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/libv8-3.3.10.2/li
b/libv8/v8/include -IC:/RailsInstaller/Ruby1.9.2/include/ruby-1.9.1/i386-mingw32.....
Run Code Online (Sandbox Code Playgroud)
我也编译:true和precompiled …
javascript runtime-error heroku ruby-1.9.2 ruby-on-rails-3.1
我收录了宝石,
dbd-mysql (0.4.4)
dbi (0.4.5)
mysql (2.8.1)
Run Code Online (Sandbox Code Playgroud)
在我运行以下代码时在rails控制台上,
require 'rubygems'
require "dbi"
require 'dbd-mysql'
dbh = DBI.connect("DBI:Mysql:TestDB:localhost","username", "pwd")
1.9.2-p180 :001 > require 'rubygems'
=> false
1.9.2-p180 :002 > require "dbi"
=> false
1.9.2p180 :003 > require 'dbd-mysql'
LoadError: no such file to load -- dbd-mysql
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:318:in `rescue in load_driver'
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:242:in `load_driver'
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:160:in `_get_full_driver'
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/dbi-0.4.5/lib/dbi.rb:145:in `connect'
from (irb):3
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.1.1/lib/rails/commands/console.rb:45:in `start'
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.1.1/lib/rails/commands/console.rb:8:in `start'
from /.rvm/gems/ruby-1.9.2-p180@rails3/gems/railties-3.1.1/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
1.9.2-p180 :004 > …
Run Code Online (Sandbox Code Playgroud)