我使用我们在WWDC上获得的光盘升级到Snow Leopard.
试图运行我的一些rails应用程序现在抱怨sql
(in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/
-- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
(See full trace by running task …Run Code Online (Sandbox Code Playgroud) 我有一个Ruby on Rails应用程序,我正在运行Mac OS X 10.6的计算机上部署.出现问题的代码由delayed_job运行.只有当它通过delayed_job运行时才会出现此问题.如果我在控制台(rails console production)中运行它或直接通过cURL调用API,它可以正常工作.此外,整个过程在我的开发环境中没有问题.
基本上,代码在一个地方工作,但由于某种原因,在必须工作的地方失败.我搜索并找到了一些资源,但没有一个建议适用或有任何区别.当我登录服务器并运行命令时,一切正常.但由于某些原因,当它们由Capistrano运行/启动时,它不起作用.
任何帮助是极大的赞赏.
重要笔记:
码:
class CallApi < Struct.new(:num)
def perform
log "Entering perform"
apinum = num || 5
log "ApiNum = #{apinum}"
results = attempt(2,10) do
ActiveSupport::JSON.decode(RestClient.get(API_URL, {:params => {:apinum => apinum}}))
end
log "Results retrieved. (count: #{results.count})"
end
def log(message)
Delayed::Worker.logger.info "[CallApi] #{Time.now} - #{message}"
end
end
Run Code Online (Sandbox Code Playgroud)
环境配置(注意:网址是假的,但形式与真实网址相同):
API_URL = "http://api.example.org/api_endpoint"
# Originally, I had "http://" before the beginning, but found a …Run Code Online (Sandbox Code Playgroud) 我下载了一个项目的源代码,发现了一个bug并修复了它.
现在我想运行测试以查明我是否已经破坏了任何东西.
测试采用最小的DSL.
我如何一次运行它们?
我搜索了适用的rake任务等,但我没有找到任何.
有没有办法将逗号分隔的字符串转换为Ruby中的数组?例如,如果我有这样的字符串:
"one,two,three,four"
Run Code Online (Sandbox Code Playgroud)
我怎么把它转换成这样的数组?
["one", "two", "three", "four"]
Run Code Online (Sandbox Code Playgroud) 正如标题所示,您可以使用这两种方法获取客户端的IP.我想知道是否有任何差异.谢谢.
在源代码中有
"/usr/local/rvm/gems/ruby-1.9.3-p194/gems/actionpack-3.2.3/lib/action _dispatch/http/request.rb"257L,8741C
def ip
@ip ||= super
end
# Originating IP address, usually set by the RemoteIp middleware.
def remote_ip
@remote_ip ||= (@env["action_dispatch.remote_ip"] || ip).to_s
end
Run Code Online (Sandbox Code Playgroud)
但我真的不知道其含义.
我有一些(或所有)控制器需要的Ruby方法.我试过把它们放进去/app/helpers/application_helper.rb.我已经将它用于视图中使用的方法.但是控制器看不到那些方法.是否有其他地方我应该放他们或我需要以不同方式访问这些帮助方法?
使用最新的稳定Rails.
ruby ruby-on-rails view-helpers ruby-on-rails-3 ruby-on-rails-3.2
据我所知,有三种方法可以在Ruby中动态调用方法:
方法1:
s = SomeObject.new
method = s.method(:dynamic_method)
method.call
Run Code Online (Sandbox Code Playgroud)
方法2:
s = SomeObject.new
s.send(:dynamic_method)
Run Code Online (Sandbox Code Playgroud)
方法3:
s = SomeObject.new
eval "s.dynamic_method"
Run Code Online (Sandbox Code Playgroud)
通过对它们进行基准测试,我已经确定方法1是最快的,方法2是慢的,方法3是迄今为止最慢的.
我也发现,.call并且.send都允许调用私有方法,而eval不是.
所以我的问题是:有没有理由使用.send或eval?为什么你不总是只使用最快的方法?这些调用动态方法的方法有什么其他区别?
我正在看" 安装Ruby on Rails·Mac OS X Yosemite ",并在说明中说它更新你的操作系统我不想做,因为我的电脑已经老了.
我还发现了" 如何在Mac上将Ruby更新为1.9.x? ".据我所知,我没有RVM,我害怕再次安装,以防我的系统要求仍然不够好.
最终,我正在尝试更新Jekyll,但我需要先更新我的系统.我需要Ruby 1.9.3或更高版本.将"如何在Mac上将Ruby更新为1.9.x?" 工作?我正在运行Ruby 1.8.7(2012-02-08 patchlevel 358)[universal-darwin10.0]'.
编辑:我最终安装了RVM.对于那些将来找到此页面的人,我遇到了这些问题/帮助页面:
* WARNING: You have '~/.profile' file...* WARNING: Above files contains PATH = with no$ PATHinsideruby ×10
arrays ×2
capistrano ×1
comparison ×1
csv ×1
delayed-job ×1
macos ×1
minitest ×1
mysql ×1
null ×1
rack ×1
string ×1
terminal ×1
view-helpers ×1