现在让我说我压缩/ tar我当前Rails应用程序目录的副本,将其放入flashdrive并存储10年.
当我尝试在10年内运行这个应用程序时,我怎么能确定rubygems.org会出现?
出于这个原因,我想知道是否有办法存储一个完整的rails应用程序,包括Gemfile在数据库和备份中的所有文件中定义的所有gem ,所以我相信我将来能够执行它.
我正在使用CSVMapper Gem将CSV文件中的某些记录导入到Rails 3模型中.(我使用这个宝石因为它是我发现最简单的方法)
无论如何,我用来导入记录的代码如下:
r = import('doc/socios_full.csv') do
map_to Associate
after_row lambda{|row, associate| associate.save }
start_at_row 1
[group,member,family_relationship_code,family_relationship_description,last_name,names,...]
#The previous line is actually longer, with more atts, but it's been cut to explain the example
end
Run Code Online (Sandbox Code Playgroud)
并且它工作得非常好,除非解析器遇到一些非英语字符,例如ó, é, ñ, í, °....那时我得到以下错误:
ArgumentError: invalid byte sequence in UTF-8
from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1831:in `sub!'
from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1831:in `block in shift'
from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1825:in `loop'
from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1825:in `shift'
from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1767:in `each'
from /home/bcb/.rvm/gems/ruby-1.9.2-p136/gems/csv-mapper-0.5.1/lib/csv-mapper.rb:106:in `each_with_index'
from /home/bcb/.rvm/gems/ruby-1.9.2-p136/gems/csv-mapper-0.5.1/lib/csv-mapper.rb:106:in `import'
from (irb):63
from /home/bcb/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.9/lib/rails/commands/console.rb:44:in `start'
from …Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含两个部分的应用程序:ruby命令行应用程序和前端的Rails应用程序.
我一直在Ruby应用程序中使用ActiveRecord和Rails模型,通过以下方式单独包含它们:
Dir[File.dirname(__FILE__) + '/../../RailsApp/app/models/*.rb'].each do |file|
filename = File.basename(file, File.extname(file))
require_relative "../../RailsApp/app/models/" + filename
end
Run Code Online (Sandbox Code Playgroud)
并通过手动保存两个几乎相同的Gemfile文件的依赖项(我认为这不是最好的方法)
昨天我将Devise添加到Rails应用程序,现在当ruby应用程序尝试包含用户模型时,将undefined method devise for class <xxxxx>显示该消息.
我在我的ruby应用程序的Gemfile中添加了devise gem,但错误仍在继续.如果我理解正确,Devise是一个Rails引擎,这就是为什么它不是仅仅因为需要gem而被加载.
我读到在另一个应用程序中包含Rails模型的更好方法是通过要求该environment.rb文件,但是当我尝试这个时,我得到了ActionMailer的错误:
undefined method `action_mailer' for #<Rails::Application::Configuration:0xbbb54bc>
Run Code Online (Sandbox Code Playgroud)
如何用设计解决问题?是否有更好的方法将Rails模型包含在另一个应用程序中,而不是我目前使用的那个以避免保留两个gemfiles?谢谢
我正在使用rails 3应用程序,它在我的locales文件夹中有不同的语言.这些文件是en.yml,pu.yml,sp.yml.所有语言都必须转换为各种格式,我需要帮助,让用户选择任何语言,如链接
<%= link_to "English language", ...%> <%= link_to "spanish", ...%>
Run Code Online (Sandbox Code Playgroud)
当用户选择语言时,该语言被设置为用户的首选语言,以便用户在每次登录后不必继续选择语言.
ruby-on-rails internationalization ruby-on-rails-3 ruby-on-rails-3.1
我正在查看Nokogiri :: CSS的源代码,因为我需要将CSS选择器转换为XPATH.运行示例代码并调用xpath_for方法后,我看到它返回一个数组.为什么是这样?CSS选择器是否有可能返回多个xpath?
[18] pry(main)> Nokogiri::CSS.xpath_for 'div.divddy input:first'
=> ["//div[contains(concat(' ', @class, ' '), ' divddy ')]//input[position() = 1]"]
Run Code Online (Sandbox Code Playgroud) 我正在开发一个ruby应用程序,它使用来自另一个Ruby on Rails Web应用程序的模型和数据作为其主要数据源.
通过将environment.rb文件包含在主文件中,Rails模型包含在此应用程序中,如下所示:
# Require Rails
require_relative "../../RailsApp/config/environment.rb"
Run Code Online (Sandbox Code Playgroud)
这有效但在加载使用Rails Gemfile中定义的gem的模型时会有未初始化的依赖项.(例如acts_as_taggable_on, rack-pjax, devise,等)
这个ruby应用程序依赖项也通过Bundler进行管理,因此目前使应用程序正常工作的唯一方法是将Rails的Gemfile中的内容复制并粘贴到ruby应用程序的Gemfile中.
显然,这种方法不是最佳的,因为宝石要求是重复的.
有没有更好的方法来包含Rails及其模型在另一个应用程序中所需的依赖项?有没有办法将Gemfile包含在另一个中?