如何在rails应用程序的ruby中指定公共目录的路径?

我想解析public文件夹中的.csv文件,我已经尝试了#{RAILS_ROOT}/public但没有成功(没有这样的文件或目录错误)。 我不知道如何使用Rails.public_path ( Rails.public_path/filename.csv不起作用)请帮忙

如何从ruby中的内部类访问外部类的类变量

我在下面的Ruby中有一些代码: class A @@lock = Monitor.new class B def method @@lock.synchronize puts “xxxxx” end end end end 运行后抛出一个错误,如下所示: 未初始化的类变量@@ lock in A :: B(NameError) 如果我想知道如何从内部类B的方法访问外部类A的类变量@@ lock,该怎么做? 先感谢您。

如何从Ruby运行Excel宏?

问题 我有这个十年前的Excel工作簿,里面有大量的VBA代码,其中一些我需要更新。 所以我有一个在Ruby中编写unit testing的疯狂想法…… 题 如何从Ruby调用Excel宏? 到目前为止我有什么 我有 一个名为“C:\ temp \ Test.xlsm”的Excel工作簿 用一张名为“Sheet1”的表格和 单元格“A1”。 此外,这个Excel工作簿 包含一个名为“Module1”的模块 用一个名为WriteToA1()的宏和 另一个名为ClearA1()宏 另外,我有一个看起来像这样的Ruby脚本: require ‘test/unit’ require ‘win32ole’ class TestDemo < Test::Unit::TestCase def testExcelMacro # Arrange excel = WIN32OLE.new("Excel.Application") excel.Visible = true excel.Workbooks.Open('C:\temp\Test.xlsm') # Act excel.run "Sheet1!WriteToA1" # Assert worksheet = excel.Workbooks.ActiveWorkbook assert_equal("blah", worksheet.Range("A1").Value) excel.Quit end end 例外 我得到了这个例外 WIN32OLERuntimeError: […]

我应该如何避免在Ruby中导致错误的memoization?

关于如何避免由于可变状态导致错误的memoization,是否有共识? 在此示例中,缓存的结果的状态发生了突变,因此在第二次调用时会产生错误的结果。 class Greeter def initialize @greeting_cache = {} end def expensive_greeting_calculation(formality) case formality when :casual then “Hi” when :formal then “Hello” end end def greeting(formality) unless @greeting_cache.has_key?(formality) @greeting_cache[formality] = expensive_greeting_calculation(formality) end @greeting_cache[formality] end end def memoization_mutator greeter = Greeter.new first_person = “Bob” # Mildly contrived in this case, # but you could encounter this […]

访问ruby块内的厨师资源

我一直试图在厨师文档和谷歌中找到答案,但我无法想出任何东西。 我不是一个ruby家伙,所以答案可能源于我接近“厨师足够ruby”的问题。 这就是我想要做的事情:在我的deploy资源中,在before_migrate属性中,我想在我当前的配方中执行资源。 我目前正在做的是将资源填充到块本身,但我知道必须有更好的方法来实现它。 before_migrate do template “#{app_root}/#{applet_name}/local_settings.py” do source “local_settings.py.erb” owner app_config[‘user’] group app_config[‘group’] variables( :database_name => app_config[‘postgresql’][‘database_name’], :user => app_config[‘postgresql’][‘user’], :password => app_config[‘postgresql’][‘password’] ) action :create end end 我的目标是什么 before_migrate do “template #{app_root}/#{applet_name}/local_settings.py”.execute end 所以我可以重复使用该模板代码。 谢谢!

使用Rails保存之前将字符串转换为日期

对Ruby很新,我已经被困了几个小时。 到处搜索,找不到答案。 所以我正在使用rails gem的bootstrap datepicker。 因为我已经更改了日期选择器的日期格式,所以它不会存储在数据库中。 猜测这是因为simple_form输入被用作字符串以避免simple_form应用的默认日期选择输入。 我的问题是:如何将“06/18/2013”​​之类的字符串修改/转换为保存到数据库之前的日期? 这最好由控制器处理吗? 我的控制器: # PUT /events/1 # PUT /events/1.json def update @event = Event.find(params[:id]) # Ugghhhh I need help # @event.event_date = Date.parse(params[:event_date]).to_date respond_to do |format| if @event.update_attributes(params[:event]) format.html { redirect_to @event, :notice => ‘Event was successfully updated.’ } format.json { head :no_content } else format.html { render […]

用葡萄和回形针上传文件

我正在研究REST API, 尝试上传用户的图片 : 葡萄微框架 回形针gem,但它不起作用,显示此错误 rails版本是3.2.8 No handler found for #<Hashie::Mash filename="user.png" head="Content-Disposition: form-data; name=\"picture\"; filename=\"user.png\"\r\nContent-Type: image/png\r\n" name="picture" tempfile=# type=”image/png”> 我尝试使用控制器测试回形针,但是当我尝试通过葡萄api上传它不起作用我的post标题是multipart / form-data 我的上传代码就是这个 user = User.find(20) user.picture = params[:picture] user.save! 因此,如果无法通过葡萄上传文件,还有其他方法可以通过REST api上传文件吗?

如何在ruby中打印多维数组?

在ruby中打印多维数组的首选方法是什么? 例如,假设我有这个2D数组: x = [ [1, 2, 3], [4, 5, 6]] 我尝试打印它: >> print x 123456 什么不起作用: >> puts x 1 2 3 4 5 6

使用S3 Presigned-URL上传一个文件,该文件将具有公共读取权限

我正在使用Ruby on Rails和AWS gem。 我可以获得上传和下载的预签名url。 但是当我得到URL时没有文件,因此在download-url上将acl设置为’public-read’不起作用。 用例是这样的:1,服务器为用户提供了一个将内容上传到我的存储桶的路径,如果没有凭据,则无法读取。 2,该内容需要在以后公开:任何人都可以阅读。 澄清一下:我没有上传文件,我提供的URL供我的用户上传。 那时,我还想给用户一个公众可读的URL。 如果我自己上传文件似乎会更容易。 此外,读取URL需要永不过期。

Ruby App MVC框架(不是web)

有没有人听说过适用于Apps / Scripts的Ruby MVC框架? 当Rails出现时 – 它是一个革命性的工具,因为它将MVC带给了大量的Web开发人员,并且曾经迫使他们使用设计模式和约定。 我正在寻找类似的东西,但是要编写从cron或用户运行的平凡管理任务:更新,备份,管理工具箱等。现在我确信每个人都有自己喜欢的方式来设置他们的应用程序和工具箱,但我想知道是否有MVC的做事方式。 一些会迫使我使用设计模式和惯例的东西(我很有罪,就像我确定其他人一样,偶尔使用快捷方式)。 现在我尝试了narf和bowline – 但我认为narf被抛弃了,而bowline则面向GUI并处于早期alpha状态。 根据我想澄清的反馈:当你开始一个新的网络应用程序 – 无论多小 – 你将使用ruby或merb或ramaze或你有什么。 您这样做是为了能够使用这些框架中的所有好东西和最佳实践。 当然,您可以编写自己的servlets器和一个文件Web应用程序,但为什么呢? 所以我想知道是否有类似于应用程序/脚本的框架。 那么有人有任何建议吗? 评论下面的一些评论: @Michael:我之前看过厨师和木偶,两者都很好但是 – 他们更多的是自动化设置任务,而不是编写应用程序。 @mansu:我不想取代Cron或计划任务 – 他们已经做好了。 我只是希望他们运行我的MVC脚本。 @Robert:Anvil听起来被抛弃 – 最后一次更新是从2007年开始的,它适合作为GUI框架。 我不认为这是一种矫枉过正 – 原因是我现在有大约40个脚本使用(从客户csv更新数据到mysql,运行备份,在ftp上运行脚本等)我确信它必将成长。 我意识到的是我的一些脚本做了同样的事情 – 比如将数据从csv更新到mysql,所以我重构了我的代码以使用一个使用配置文件的公共库。 所以我认为这不是一种矫枉过正。 我只是想知道是否已有一个框架。 @mereghost:从GUI的角度来看,RuGUI非常有趣,值得进一步调查。 似乎积极维护。 我会看看我是否可以使用它,或者我是否可以根据它开发一些东西。 @bantic:不确定我是怎么错过Thor的 – 我不时检查Katz的博客。 它有点像我正在寻找的东西,但在某种意义上它并不是很适合用一堆选项开发一个工具,即复制命令和一堆关于如何复制的参数。 我想要的东西更多的是一个有很多任务的应用程序。 @Chuck:Chuck,我的想法几乎一样,直到我开始编写更新DB的脚本。 所以在这个意义上我确实有M部分MVC,如果不是视图。 您可能会争辩说我只有一个视图 – 控制台,或者我甚至有多个 – 让我们说我的脚本需要每天运行并在共享上更新一些.xls文件,但也将其输出为csv,也许是tsv文件,并能够为客户服务消费做xml。 […]