标签: taglib-ruby

Heroku忽略了捆绑配置

我正在尝试在Heroku上安装gem'taglib-ruby'.这个gem编译为原生扩展,需要一个名为taglib的系统依赖,因此在通过heroku vulcan编译和上传之后,我实现了通过heroku bash上的命令行编译gem:

bundle exec gem install taglib-ruby -- --with-opt-dir=/app/vendor/taglib
Run Code Online (Sandbox Code Playgroud)

并且为了稍后捆绑器将使用此参数,我通过命令将其添加为捆绑器配置:

bundle config build.taglib-ruby '--with-opt-dir=/app/vendor/taglib'
Run Code Online (Sandbox Code Playgroud)

我已经验证了此配置已应用,检查文件/.bundle/config并查找BUNDLE_BUILD__TAGLIB-RUBY行.

然而,在将我的项目推送到heroku并且在执行bundle install命令时,heroku抱怨上面的gem(taglib-ruby)由于taglib库不存在而无法安装,尽管这是我试图解决的问题上面提到的选项'--with-opt-dir =/app/vendor/taglib'.

所以似乎Heroku忽略了捆绑器配置.

可能会发生什么?您是否知道在Heroku上实现相同意图(使用自定义构建选项安装gem)的另一种方式?

gem heroku bundler taglib-ruby

5
推荐指数
0
解决办法
324
查看次数

RoR TagLib-Ruby:如何在DB中设置ID3标签

在此先感谢您的帮助.

我想在我的数据库中设置id3标签数据作为我的模型MasterSong的属性.具体来说,标题,艺术家和专辑.

create_table :master_songs do |t|
  t.integer :user_id
  t.has_attached_file :m_song
 **- t.string :title
 - t.string :artist
 - t.string :album**
Run Code Online (Sandbox Code Playgroud)

在我的模型中,我使用回调来保存对象(master_song)之前的数据.

before_save :set_id3_tags_in_database

def set_id3_tags_in_database
TagLib::MPEG::File.open(self.m_song.path) do |file|
   tag = file.id3v2_tag
   tag.title
   tag.album
   tag.artist
end
  self.update_attributes(:title => tag.title,
  :artist => tag.artist,
  :album => tag.album)
end
Run Code Online (Sandbox Code Playgroud)

我很确定我的语法是问题所在.该对象似乎遇到了错误

undefined method `title' for nil:NilClass with an infinite loop
Run Code Online (Sandbox Code Playgroud)

控制器创建动作是正常的:

 def create
   @master_song = current_user.master_songs.build(params[:master_song])

   respond_to do |format|
    if @master_song.save
     format.html { redirect_to @master_song, notice: 'Master song was successfullycreated.' }
   end
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?更新:def set_id3_tags z = …

id3 ruby-on-rails taglib-ruby

0
推荐指数
1
解决办法
956
查看次数

标签 统计

taglib-ruby ×2

bundler ×1

gem ×1

heroku ×1

id3 ×1

ruby-on-rails ×1