输出到控制台,同时保留ruby中的用户输入

我有一个ruby脚本,它同时和异步地从服务器接收和显示消息,并允许用户在控制台上输入。 收到消息时,它当前正在用户正在键入的内容中写入。 输入本身没有乱码,但看起来很糟糕。 理想情况下,它会保存用户当前输入,输出消息,然后在下一行恢复输入。 我通过拦截每一个击键来做到这一点,但我记得的是,这是一个很大的麻烦。 我对ruby很新,所以我不确定是否有一个很好的方法来做到这一点,或者如何做到这一点。 示例:用户正在键入>abcde ,并且消息hello进入,用户键入fgh之后。 控制台现在显示: >abcdehellofgh 用户可以在最后继续输入。 我希望它显示: hello >abcdefgh

Ruby模块声明

这样做有什么区别吗? class Bus::Driver end 和 module Bus class Driver end end 如果不是,首选哪种语法?

Sinatra可变范围

请使用以下代码: ### Dependencies require ‘rubygems’ require ‘sinatra’ require ‘datamapper’ ### Configuration config = YAML::load(File.read(‘config.yml’)) name = config[‘config’][‘name’] description = config[‘config’][‘description’] username = config[‘config’][‘username’] password = config[‘config’][‘password’] theme = config[‘config’][‘theme’] set :public, ‘views/themes/#{theme}/static’ ### Models DataMapper.setup(:default, “sqlite3://#{Dir.pwd}/marvin.db”) class Post include DataMapper::Resource property :id, Serial property :name, String property :body, Text property :created_at, DateTime property :slug, String […]

Sass – 安装时出错

我最近安装了Ruby gem Sass,并且经常将它用于我正在使用的应用程序。 今天我去运行sass –watch scss:css,正如我通常会注意到我得到以下错误: -bash: sass: command not found 然后我尝试运行以下行并获得此输出: ~$ sudo gem install sass ERROR: While executing gem … (Errno::EPERM) Operation not permitted – /usr/bin/sass 在解释shell / bash错误时,我会认为自己是一个新手,有什么可能导致这个问题的建议? 更新 我已经尝试了@ jperelli的建议并得到以下内容(ps我在Mac OS上): ~$ sudo gem update bundler Updating installed gems Updating bundler Fetching: bundler-1.10.5.gem (100%) ERROR: While executing gem … (Errno::EPERM) Operation […]

构建一个rails表单来过滤索引页面?

G’day伙计们,我在过滤我系统中数千种商品的展示时遇到了问题。 根据我们正在构建的系统的规格,我们必须有一个表单,允许人们输入开始日期,然后是几分钟的间隔,以过滤项目的表示。 我已经构建了我的帮助函数来返回该间隔期内的所有交易,但我不能在我的生活中正确构建将在索引页顶部返回dateTime值和整数值的表单? 有任何想法吗? 我是否必须构建一个单独的模型对象来分配值,或者是否有更简单的方法?

使用Ruby 1.9.3上的大括号进行全局处理

如果您使用File :: FNM_EXTGLOB选项,则最新版本的Ruby支持在globbing中使用大括号 从2.2.0文档 File.fnmatch(‘c{at,ub}s’, ‘cats’, File::FNM_EXTGLOB) #=> true # { } is supported on FNM_EXTGLOB 但是,1.9.3文档说它在1.9.3中不受支持: File.fnmatch(‘c{at,ub}s’, ‘cats’) #=> false # { } isn’t supported (另外,尝试使用File::FNM_EXTGLOB给出了一个名称错误) 有没有办法在Ruby 1.9.3中使用大括号,比如第三方gem? 我想要匹配的字符串来自S3,而不是本地文件系统,所以我不能只是要求操作系统根据我的知识进行通配。

阅读时Ruby CSV UTF8编码错误

这就是我在做的事情: csv = CSV.open(file_name, “r”) 我用这个来测试: line = csv.shift while not line.nil? puts line line = csv.shift end 我碰到了这个: ArgumentError: invalid byte sequence in UTF-8 我在这里读到答案 ,这就是我的尝试 csv = CSV.open(file_name, “r”, encoding: “windows-1251:utf-8”) 我遇到了以下错误: Encoding::UndefinedConversionError: “\x98″ to UTF-8 in conversion from Windows-1251 to UTF-8 然后我遇到了一个Ruby gem – charlock_holmes。 我想我会尝试使用它来查找源编码。 CharlockHolmes::EncodingDetector.detect(File.read(file_name)) => {:type=>:text, :encoding=>”windows-1252″, :confidence=>37, :language=>”fr”} […]

Rack Sessions在Chrome中迷失了

我有一个非常简单的应用程序托管在EC2上使用Sinatra构建,在nginx后面提供服务。 问题是,使用Chrome,会话变量在Sinatra中“丢失”。 它不会发生在Firefox中。 这是使用Rack :: Session :: Cookie。 这与此问题类似: Sinatra不会在Chrome上使用重定向来保持会话 任何有关如何在Chrome中解决此问题的见解将不胜感激。

如果远程URL没有返回/超时问题,使用Open-URI获取XML和最佳实践?

只要没有远程错误,当前代码就可以工作: def get_name_from_remote_url cstr = “http://someurl.com” getresult = open(cstr, “UserAgent” => “Ruby-OpenURI”).read doc = Nokogiri::XML(getresult) my_data = doc.xpath(“/session/name”).text # => ‘Fred’ or ‘Sam’ etc return my_data end 但是,如果远程URL超时或什么都不返回怎么办? 例如,我如何检测到并返回nil? 而且,Open-URI是否提供了一种方法来定义在放弃之前等待多长时间? 当用户等待响应时调用此方法,那么我们如何在放弃之前设置最大timeoput时间并告诉用户“抱歉我们尝试访问的远程服务器现在不可用”?

gem install mysql失败

我按照http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/上的说明进行操作,包括通过macport安装ruby。 每当我执行gem install mysql时 ,我都会收到以下错误 bash-3.2# gem install mysql Building native extensions. This could take a while… ERROR: Error installing mysql: ERROR: Failed to build gem native extension. /opt/local/bin/ruby extconf.rb checking for mysql_ssl_set()… no checking for rb_str_set_len()… no checking for rb_thread_start_timer()… no checking for mysql.h… no checking for mysql/mysql.h… no *** extconf.rb failed *** Could […]